如何在 Codeigniter 中连接三个表

2022-08-30 20:21:34

我正在使用codeigniter框架来开发一个音乐CMS。我在mysql数据库中有3个表,目前在“相册”表和“模型,控制器”中工作。我想选择“相册”表1并加入“相册” - >“cat_id”与“类别” - >“cat_id”,并获取所有类别的记录。

然后我想加入“专辑” - >“原声带”上的“album_id” - >“album_id”,然后获取所有原声带记录A到Z。

请有人帮我显示正确的codeigniter查询,我如何选择和JOIN表,然后从3个表中获取记录,?

表1 ->类别

  • cat_id

  • cat_name

  • cat_title
  • 日期

    表2->相册

  • cat_id
  • album_id

  • album_title

  • album_details

    表3->原声带

  • album_id

  • track_title

  • track_url
  • 日期

答案 1

在模型中使用此代码

public function funcname($id)
{
    $this->db->select('*');
    $this->db->from('Album a'); 
    $this->db->join('Category b', 'b.cat_id=a.cat_id', 'left');
    $this->db->join('Soundtrack c', 'c.album_id=a.album_id', 'left');
    $this->db->where('c.album_id',$id);
    $this->db->order_by('c.track_title','asc');         
    $query = $this->db->get(); 
    if($query->num_rows() != 0)
    {
        return $query->result_array();
    }
    else
    {
        return false;
    }
}

答案 2

试试这个

在模型中

如果你想得到所有的专辑数据使用

  function get_all_album_data() {

    $this->db->select ( '*' ); 
    $this->db->from ( 'Album' );
    $this->db->join ( 'Category', 'Category.cat_id = Album.cat_id' , 'left' );
    $this->db->join ( 'Soundtrack', 'Soundtrack.album_id = Album.album_id' , 'left' );
    $query = $this->db->get ();
    return $query->result ();
 }

如果要获取特定的专辑数据,请使用

  function get_album_data($album_id) {

    $this->db->select ( '*' ); 
    $this->db->from ( 'Album' );
    $this->db->join ( 'Category', 'Category.cat_id = Album.cat_id' , 'left' );
    $this->db->join ( 'Soundtrack', 'Soundtrack.album_id = Album.album_id' , 'left' );
    $this->db->where ( 'Album.album_id', $album_id);
    $query = $this->db->get ();
    return $query->result ();
 }

推荐