gpt4 book ai didi

php - 如何在一次查询中获取关注用户的内容和您自己的内容?

转载 作者:行者123 更新时间:2023-11-30 22:58:41 25 4
gpt4 key购买 nike

我正在尝试建立一个社交网络;我有一张用户帖子表。该表如下所示:

id fromuid touid date ip content

fromuid 是发布帖子的用户,touid 设置为您发布的任何人。因此,如果您访问某人的页面并发帖,touid 将设置为您的 UID。但是,如果您在家并且不在任何地方发帖,touid 将被设置为您的 UID。

现在这是我的问题:我正在尝试获取您关注的用户的内容。对于关注者有一个这样的表:

id follower following date

然后,在我的帖子类中,我获取所有关注者并将它们放入预定义的数组中,如下所示:

        $getRelatedPostsQuery = new Database(); 
$getFollowers = $getRelatedPostsQuery->query(array("SELECT * FROM follower WHERE follower = ?", array($this->uid)))->fetchAll(PDO::FETCH_ASSOC);
foreach ($getFollowers as $key) {
$followers[] = $key['following'];
}

这是我开始挣扎的地方。我在这里有这个查询:

    $getRelatedPosts = new Database();
$relatedPostsResult = $getRelatedPosts->query(array("SELECT * FROM posts WHERE fromuid IN ('". implode("', '", $followers) ."') ORDER BY id DESC", array()))->fetchAll(PDO::FETCH_ASSOC);

这绝对没问题,但问题是,如果我关注了一个叫 Jack 的用户,而我没有关注的用户 Jill 在 Jack 的墙上发帖,我会看到 Jill 发布的内容。我显然只想看到我关注的用户的内容。我将如何最好地去做这件事?另外,我猜这可能是一种过于复杂的方法,是吗?任何建议将不胜感激。

最佳答案

如果我没理解错的话,您只是希望所有帖子都来自您关注的人,而不是其他人发给您关注的人的帖子。

如果是这种情况,只需在您的 where 子句中添加一个即可解决问题:

$relatedPostsResult = $getRelatedPosts->query(array("SELECT * FROM posts WHERE fromuid IN ('". implode("', '", $followers) ."') AND fromuid = touid ORDER BY id DESC", array()))->fetchAll(PDO::FETCH_ASSOC);

这将告诉查询仅获取 fromuidtouid 相同的帖子(该人在自己的“墙上”发布的帖子)。

您还询问是否有更简单的方法,如果您组合查询,则有:

$getRelatedPosts = new Database();
$relatedPostsResult = $getRelatedPosts->query(
array("SELECT * FROM posts WHERE fromuid IN(SELECT fromuid FROM follower WHERE follower = ?) AND fromuid = touid ORDER BY id DESC",
array($this->uid))
)->fetchAll(PDO::FETCH_ASSOC);

或者如果您更愿意使用 join :

$getRelatedPosts = new Database();
$relatedPostsResult = $getRelatedPosts->query(
array("SELECT * FROM posts, follower WHERE follower.follower = posts.fromuid AND follower.follower = ? AND follower.fromuid = follower.touid ORDER BY posts.id DESC",
array($this->uid))
)->fetchAll(PDO::FETCH_ASSOC);

关于php - 如何在一次查询中获取关注用户的内容和您自己的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com