我有两张桌子
keywords_tags
和keywords_tags_company
keyword_tag_id keyword_tag_name
-------------- ----------------
1 Clothing
2 Footwear
3 Fashion
keyword_tag_company_id keyword_tag_id company_id
---------------------- -------------- ----------
1 1 7
2 2 7
3 3 7
我想选择所有
keyword_tag_name
,其中company_id
是7
。
这是我的询问
public function getAllTag($id) {
$this->db->where('company_id', $id);
$this->db->select('keyword_tag_id');
$tagId = $this->db->get('keywords_tags_company')->result();
$this->db->or_where('keyword_tag_id', $tagId);
$this->db->select('keyword_tag_name');
$tagName = $this->db->get('keywords_tags')->result_array();
return $tagName;
}
如果我运行上面的查询输出是:
“where 子句”中的未知列“数组” 从 (
) 中选择keyword_tag_name
,其中keywords_tags
= 数组keyword_tag_id
我在这个查询中错了。
您在
or_where('keyword_tag_id', $tagId)
中传递数组,因为父查询返回多行,我建议您使用带有 join 的单个查询
public function getAllTag($id) {
return $this->db->select('t.keyword_tag_name')
->from('keywords_tags t')
->join('keywords_tags_company c','t.keyword_tag_id = c.keyword_tag_id')
->where('c.company_id', $id)
->get()
->result_array();
}