Php 如何在Codeigniter中连接三个表

Php 如何在Codeigniter中连接三个表,php,mysql,codeigniter,join,Php,Mysql,Codeigniter,Join,我正在使用codeigniter框架开发一个音乐cms。我在mysql数据库中有3个表,目前我在“相册”表和“模型,控制器”中工作。我想选择“Album”表1,并将“Album”->“cat_id”与“Category”->“cat_id”连接起来,并获取所有categories记录 然后我想加入“唱片”->“唱片id”上的“唱片”->“唱片id”,然后从A到Z取出所有的唱片 请有人帮助我展示正确的codeigniter查询,我如何选择和连接表,然后从3个表中获取记录 表1->类别 猫咪 猫的

我正在使用codeigniter框架开发一个音乐cms。我在mysql数据库中有3个表,目前我在“相册”表和“模型,控制器”中工作。我想选择“Album”表1,并将“Album”->“cat_id”与“Category”->“cat_id”连接起来,并获取所有categories记录

然后我想加入“唱片”->“唱片id”上的“唱片”->“唱片id”,然后从A到Z取出所有的唱片

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

表1->类别

  • 猫咪

  • 猫的名字

  • 类别名称
  • 日期

    表2->相册

  • 猫咪
  • 相册编号

  • 专辑名称

  • 相册详情

    表3->配乐

  • 相册编号

  • 曲目标题

  • 跟踪url
  • 日期
在型号中使用此代码

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;
    }
}
试试这个

在您的模型中

如果你想得到所有相册数据,请使用

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

请尝试此项以获取数据

function get_album_data() {
    $this->db->select ( 'album.*,cat.*,s_track.*' )
        ->from ( 'albums as album' )
        ->join ( 'categories cat', 'cat.cat_id = album.cat_id')
        ->join ( 'soundtracks s_tracks ', 's_tracks.album_id = album.album_id');
    $query = $this->db->get ();
    return $query->result ();
}
而对于数据,请尝试此

function get_album_datum($album_id) {
    $this->db->select ( 'album.*,cat.*,s_track.*' )
        ->from ( 'albums as album' )
        ->join ( 'categories cat', 'cat.cat_id = album.cat_id')
        ->join ( 'soundtracks s_tracks ', 's_tracks.album_id = album.album_id');
    $this->db->where ( 'album.album_id', $album_id);
    $query = $this->db->get ();
    return $query->row();
}7
855788

尝试以下方法:

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(); 
    return $query->result_array();
}

如果未找到结果,CI将返回false,否则返回true

查看此链接。在这里,您可以找到如何在Codeigniter中连接表。向我们展示一些您尝试过的代码,以及我在哪里传递$id,我是说相册id?要获取特定记录?很重要,如果您有mytyable.id和mysecondtable.id,并且使用select(“”),第一个id字段将不会显示。您需要手动选择('mytable.id为id1,mysecondtable.id为id2,mytable.,mysecondtable.*')。。。codeigniter联接不包含表前缀,因此记录集不会返回重复的字段。欢迎使用StackOverflow!你能在回答中解释一下这个代码吗?
public function getdata(){
        $this->db->select('c.country_name as country, s.state_name as state, ct.city_name as city, t.id as id');
        $this->db->from('tblmaster t'); 
        $this->db->join('country c', 't.country=c.country_id');
        $this->db->join('state s', 't.state=s.state_id');
        $this->db->join('city ct', 't.city=ct.city_id');
        $this->db->order_by('t.id','desc');
        $query = $this->db->get();      
        return $query->result();
}
public function getdata(){
        $this->db->select('c.country_name as country, s.state_name as state, ct.city_name as city, t.id as id');
        $this->db->from('tblmaster t'); 
        $this->db->join('country c', 't.country=c.country_id');
        $this->db->join('state s', 't.state=s.state_id');
        $this->db->join('city ct', 't.city=ct.city_id');
        $this->db->order_by('t.id','desc');
        $query = $this->db->get();      
        return $query->result();
}