如何在代码Igniter中的where子句中传递数组

时间:2015-04-28 10:07:45

标签: php mysql codeigniter

我有两张表keywords_tagskeywords_tags_company

表:keywords_tags

keyword_tag_id   keyword_tag_name
--------------   ----------------
1                Clothing
2                Footwear
3                Fashion

表:keywords_tags_company

keyword_tag_company_id    keyword_tag_id   company_id
----------------------    --------------   ----------
1                          1               7
2                          2               7
3                          3               7

我想选择keyword_tag_namecompany_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子句'     SELECT keyword_tag_name FROM(keywords_tags)WHERE keyword_tag_id = Array

我在这个查询中错了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

您正在or_where('keyword_tag_id', $tagId)中传递数组,因为父查询会返回多行,我建议您使用带有连接的单个查询

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();
}