使用 CodeIgniter 的活动记录从数据库表中获取与另一个表中的合格行相关的记录

问题描述 投票:0回答:1

我有两张桌子

keywords_tags
keywords_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_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
= 数组

我在这个查询中错了。

php mysql codeigniter activerecord query-builder
1个回答
2
投票

您在

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.