【发布时间】:2015-10-28 14:46:44
【问题描述】:
我有一个困境,我正在尝试制作一个 facebook 风格的墙,其中你有墙桌、用户桌、墙贴表和图像表(对于这种情况)。为简化流程,将图像张贴在图像表中,并将条目设置为墙贴。它按墙 ID 分组,但是当创建 cmets 时,它会为每个新评论重复墙帖。本质上,我只希望每个墙贴一个帖子。
MYSQL 查询(Codeigniter):
$this->db->select('*');
$this->db->from('wall_posts AS p');
$this->db->join('users AS k', 'p.wall_poster = k.user_id AND p.wall_owner = k.user_id', 'left');
$this->db->group_by('p.wall_id');
$this->db->where('p.wall_poster', $pid); // $pid = given user id
$this->db->or_where('p.wall_owner', $pid);
$this->db->order_by('p.wall_id', 'desc');
$this->db->limit($lim); // $lim = limit number
return $this->db->get();
表格示例
wall_id|owner_id|reference_id|wall_poster
1 |0 |55 | 2
2 |0 |30 | 1
3 |0 |32 | 2
4 |2 |19 | 3
5 |0 |0 | 4
6 |0 |0 | 2
7 |0 |32 | 3
8 |0 |18 | 4
现在,您可以看到 ID 3 和 ID 7 具有相同的 reference_id(本例中为图像),因此稍后显示结果时,任何引用该图像的帖子将显示多次而不是仅显示一次。我还有一个名为 post_type 的列,用于在控制器中确定它是否是普通帖子、评论、图像帖子、图像评论等...
提前致谢!这一直困扰着我,如果可能的话,我想将其保留为单个查询。
【问题讨论】:
标签: php mysql codeigniter