我在codeigniter中编写了很多代码,但是我不得不重构我的数据库列前缀,当我使用连接查询加入我的模型查询中的一些表时,在一个查询中有一些表具有相同的id列,我使用Alias' As alias1'对于表名,模型成功运行没有问题
但是当我将$q = $this->db->get()
变量传递给我的控制器然后将其传递给我的视图并按照以下方式迭代它时:
foreach($q->result() as $res)
echo $res->alias1.id;
未知$alias1.id
的php错误,但我为其中一个表声明了alias1
。
问题是什么? 感谢
答案 0 :(得分:1)
执行->result()
时,CI将构建一个对象数组。
您在select中声明的每个列都将是一个对象成员。但是,别名不会保留。
这意味着SELECT alias.field
将转换为$obj->field
而不是$obj->alias.field
。
如果您有两个具有相同名称的字段,请在SELECT
子句中设置别名
$this->db->select("alias1.field as myfield, alisas2.field as myotherfield");
然后,您就可以使用$obj->myfield
和$obj->myotherfield