我在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