Codeigniter的此JOIN的兼容版本是什么

时间:2017-08-05 05:04:14

标签: php codeigniter join query-builder

我想在 Codeigniter 查询生成器语言中使用JOIN的兼容版本。

我的代码工作正常,但我想学习如何做。

$query = $this->db->query("
        SELECT DISTINCT
        pics_tag.* , pics.*
        FROM pics_tag INNER JOIN pics
        ON pics_tag.pics_id = pics.id
        JOIN tag
        ON pics_tag.tag_id = $tag_id           
        ");

3 个答案:

答案 0 :(得分:1)

$this->db->select("pics_tag.*, pics.*");
$this->db->from("pics_tag");
$this->db->join("pics","pics_tag.pics_id=pics.id");
$this->db->join("tag","pics_tag.tag_id=$tag_id");

阅读Codeigniter文档以获取正确的连接查询

答案 1 :(得分:0)

或者你可以制作模型,只需要在模型函数中给出的字段。

   function GetJoinRecordNew($table, $field_first, $tablejointo, $field_second, $field, $value, $field_val) {
        $this->db->select("$field_val");
        $this->db->from("$table");
        $this->db->join("$tablejointo", "$tablejointo.$field_second = $table.$field_first");
        $this->db->where("$table.$field", "$value");
        $this->db->group_by("$table.$field");
        $q = $this->db->get();
        if ($q->num_rows() > 0) {
            foreach ($q->result() as $rows) {
                $data[] = $rows;
            }
            $q->free_result();
            return $data;
        }
    }

现在你只能传递参数,不需要为join添加不同的函数。这是最好的方式。

答案 2 :(得分:0)

我建议group_by然后使用Distinct。

您需要添加group_by

$query = $this->db
    ->select('pt.* , p.*')  
    ->select('$subquery')   
    ->from('pics_tag as pt')
    ->join('pics as p', 'pt.pics_id = p.id', 'left')
    ->join('tag as t', 'pt.tag_id = '.$tag_id.'', 'left')       
    //->group_by('column_name'); // add group by    add your colun name and remove comment          
    ->get();