将codeigniter数据库结果对象转换为自定义对象

时间:2013-03-28 23:20:51

标签: php oop codeigniter

Codeigniter可以将数据库查询作为通用“对象”返回,如:

$q = $this->db->get("some_table");
$obj = $this->q->row();
$var = $obj->some_property

在我的情况下,我想创建一个PHP类,其公共变量是1对1的数据库列,以及一些公共方法。是否有快速的一次性方法将通用“行”对象转换或转换为我的自定义类对象?我读过的帖子暗示它肯定是可能的,但大多数都涉及一个非常hacky序列化/反序列化解决方案。过去我刚刚完成了:

public function __construct($row) {
  $this->prop = $row->prop;
  $this->id = $row->id;
  $this->value = $row->value;
}

我觉得这很乏味,而且代码很丑。

1 个答案:

答案 0 :(得分:3)

请参阅result()下的第三部分:

CodeIgniter User Guide: Generating Query Results

  

您还可以将一个字符串传递给result(),该结果表示要为每个结果对象实例化的类(注意:必须加载此类)

$query = $this->db->query("SELECT * FROM users;");

foreach ($query->result('User') as $row)
{
    echo $row->name; // call attributes
    echo $row->reverse_name(); // or methods defined on the 'User' class
}