我开始了一个带有codeigniter的新项目,我为用户和帖子创建了三个表,并喜欢这样
用户表有这些记录
帖子表有这些记录
user_id字段保存创建者user_id
和表格一样
我想加入这三张桌子,我可以这样做,但我需要加入两个这样的结果,我不知道我能做什么
$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();
然后将这些结果合并在一起
请帮帮我
答案 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版本。