在codeigniter中加入两个结果

时间:2016-06-22 14:20:53

标签: php mysql codeigniter join

我开始了一个带有codeigniter的新项目,我为用户和帖子创建了三个表,并喜欢这样

用户表有这些记录

  1. USER_ID
  2. 全名
  3. 用户名
  4. 帖子表有这些记录

    1. POST_ID
    2. 标题
    3. USER_ID
    4. user_id字段保存创建者user_id

      和表格一样

      1. Like_ID
      2. USER_ID
      3. POST_ID
      4. 我想加入这三张桌子,我可以这样做,但我需要加入两个这样的结果,我不知道我能做什么

          $this->db->select('*');
          $this->db->from('Post');
          $this->db->join('User', 'User.User_ID = Post.User_ID', 'left');
          $query = $this->db->get();
          return $query->result();
        

        和这个

          $this->db->select('*');
          $this->db->from('Like');
          $this->db->where('User_ID' = $id);
          $query = $this->db->get();
          return $query->result();
        

        然后将这些结果合并在一起

        请帮帮我

2 个答案:

答案 0 :(得分:2)

您可以在单个codeigniter查询中加入多个表

$this->db->select('*');
$this->db->from('Post');
$this->db->join('User', 'User.User_ID = Post.User_ID', 'left');
$this->db->join('Like','Like.Post_ID = Post.Post_ID AND User.User_ID = $id','left');
$query = $this->db->get();
return $query->result();

答案 1 :(得分:1)

如果我正确理解您的问题,您想确定当前用户喜欢哪些帖子。 sql语句看起来像sg,如下所示:

select p.*, u.*, l.user_id as like_user_id
from post p
inner join user u on u.user_id=p.user_id    -- I do not think you need a left join here
left join `like` l on p.post_id=l.post_id and l.user_id=$id 

我使用公共like字段将post表连接到post_id表。如果l.user_id为null,则当前用户不喜欢该帖子。基于上述查询和您的第一个codeigniter代码,您应该能够创建此查询的codeigniter版本。