将编码器数据库结果对象转换为自定义对象


Cast codeigniter database result object to custom object

Codeigniter可以返回一个数据库查询作为通用"对象",如:

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

在我的情况下,我想做一个PHP类的公共变量是1对1与数据库列,以及一些公共方法。是否有一种快速的一次性方式来转换或转换通用的"行"对象到我的自定义类对象?我读过一些帖子,暗示这当然是可能的,但大多数都涉及到一个非常粗糙的序列化/反序列化解决方案。在过去,我只是做了:

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

参见result():

第三部分

CodeIgniter用户指南:生成查询结果

你也可以传递一个字符串给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
}