我正在建立一个社交网络平台。而我只是想知道一种过滤掉用户朋友帖子的方法。
目前,我过滤帖子的方式是选择所有帖子,但只显示来自用户firend的那些帖子,如下所示:
$select = $con->query("SELECT * FROM posts ORDER BY timestamp DESC");
while($postassoc = $con->fetch_assoc()){
$postby = $postassoc['user'];
$friendof = $con->query("SELECT id FROM friends WHERE 'from'='$user' AND 'to' ='$postby' OR 'to'='$postby' AND 'from'='$user' AND 'auth'='1'");
If($friendof != 0){
//show post
}
}
假设没有错误,从长远来看,这种方式将耗费大量时间。有没有更好更有效的方法?
答案 0 :(得分:1)
假设你的朋友表是这样的:table:friends
id user_id friend_id
1 22 35
现在你的帖子表可能就像这张表:帖子
id user_id post_content post_date
1 35 hbsdhdhs 25-Dec
现在您可以使用联接来过滤朋友的帖子
$select = $con->query("SELECT posts.post_content FROM posts join friends on posts.user_id=friends.friend_id and friends.user_id =22");
答案 1 :(得分:0)
非常效率低下。您是否要通过社交网站上的每一个帖子来获取它?如果你有十亿用户怎么办?
你最好通过迭代所有朋友,拉出最相关的朋友,然后展示他们的活动。大型社交网站在相关性方面为您的朋友订购。 (你可以在'聊天'侧面板上看到这一点 - 你最好的朋友将成为最佳人选。
拥有用户后,本网站将进一步讨论查找活动的实施,例如: https://stackoverflow.com/a/205477/1752129