我在codeigniter中写了很多代码,但是我不得不重新构造数据库列前缀,当我使用联接查询在模型查询中联接某些表时,在一个查询中有一些表具有相同的id列,所以我使用了Alias表名称为“ As alias1”,模型成功运行而没有问题

但是,当我将$q = $this->db->get()变量传递给控制器​​,然后将其传递给我的视图并像这样迭代时:

foreach($q->result() as $res)
   echo $res->alias1.id;


PHP错误,未知的$alias1.id,但我为其中一张表声明了alias1

有什么问题 ?
谢谢

最佳答案

当您执行->result()时,CI将构建一个对象数组。
您选择中声明的每一列将是一个对象成员。但是,别名不会保留。

这意味着SELECT alias.field将转换为$obj->field而不是$obj->alias.field

如果您有两个名称相同的字段,请在SELECT子句中设置一个别名

$this->db->select("alias1.field as myfield, alisas2.field as myotherfield");


然后,您将可以使用$obj->myfield$obj->myotherfield

09-25 21:28