所以我有一个项目,我正在努力“跟随”另一个用户,并与其他用户一起查看他们的帖子。像Facebook一样。像这样的东西
Bob: I love SO
Alex: I love SO too
Ally: Me three!
所以这就是我到目前为止所做的。我正在选择已登录用户关注的人员,所有人都存储在名为followers
的表中。这就是它的样子
+-----+-------------+-----------+
| id | follow_from | follow_to |
+-----+-------------+-----------+
| 319 | bob | alex |
| 320 | ally | alex |
| 320 | alex | ally |
+-----+-------------+-----------+
如您所见,它会显示用户以及他们关注的对象。所以这就是我如何检索你正在追踪的人的列表
SELECT * FROM followers WHERE follow_from = :username
现在将返回
Bob
Alex
Ally
现在进入帖子。我将帖子存储在另一个名为“posts”的表中。这就是看起来像
+----+-----------+---------+-----------+--------------+------------+
| id | post_user | post_ip | post_date | post_content | post_likes |
+----+-----------+---------+-----------+--------------+------------+
| 1 | alex | ::1 | | I like cats | 0 |
+----+-----------+---------+-----------+--------------+------------+
所以我假设 Bob
和Ally
都看到了alex的帖子。我遇到的问题是检索帖子,基本上将合并在一起。由于我的帖子在另一个表格中,我无法找到找出哪个帖子的方法。
我试过这个
SELECT * FROM posts WHERE followed_user=:username ORDER BY post_date DESC
但是无法找到一种方法来使用:username
多个用户名。喜欢追随者。所以基本上我的问题是,如何在一面墙上显示多个用户的多个帖子。或者,如果有人能够解决我如何从您关注的多个人中选择帖子的问题。
当我执行SELECT * FROM followers WHERE follow_from = :username
并运行
$posts = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$posts[] = array(
'follow_to' => $row['follow_to']
);
}
并且
foreach($posts as $post) {
echo $post['follow_to'];
}
我得到了关注者列表,所以我认为这与检索帖子有关。
答案 0 :(得分:1)
您正在寻找JOIN / Subquery,
SELECT
*
FROM
posts
WHERE
post_user IN
(
SELECT follow_to FROM followers WHERE follow_from = :user
)
<强>更新强>
如果您想加载一个人以及关注者的帖子列表,
SELECT
*
FROM
posts
WHERE
post_user IN
(
SELECT
follow_from
FROM
followers
WHERE
follow_to = :user
OR
follow_from = :user
)