我在模型中遇到了codeigniter活动记录。
问题是我的查询只返回一个表,我的连接表丢失了吗?
$this->db->select("page.ID, page.TITLE, category.TITLE");
$this->db->from('page');
$this->db->join('category','page.ID_CATEGORY = category.ID');
$query = $this->db->get();
return $query->result_array();
答案 0 :(得分:2)
您需要为查询提供唯一的别名,例如数组索引是唯一的,您可以在查询的同一索引上有两个值TITLE
将成为具有记录的数组的索引,因此请尝试以下查询,您当前的数组形式结果将类似于
array(
[0] => array(
['ID'] => 1,
['title'] => test page
)
[1] => ...
)
由于两个连接表中的列名称标题相同,因此您不能拥有如下所示的数组,在同一索引上具有2个值
array(
[0] => array(
['ID'] => 1,
['title'] => test page,
['title'] => test cat /* wrong index */
)
[1] => ...
)
查询
$this->db->select("page.ID, page.TITLE AS page_title, category.TITLE AS cat_title");
$this->db->from('page');
$this->db->join('category','page.ID_CATEGORY = category.ID');
$query = $this->db->get();
所以结果数组看起来像
array(
[0] => array(
['ID'] => 1,
['page_title'] => test page,
['cat_title'] => test cat,
)
[1] => ...
)
答案 1 :(得分:0)
尝试
return $query->result();
而不是
return $query->result_array();
或者尝试这种方式:
$this->db
->select('ID')
->from('table2');
$subquery = $this->db->_compile_select();
$this->db->_reset_select();
$query = $this->db
->select('t1.name')
->from('table1 t1 ')
->join("($subquery) t2","t2.id = t1.t2_id")
->get('table1 t1');