gpt4 book ai didi

php - PHP/MySQL friend 的 friend ?

转载 作者:行者123 更新时间:2023-11-29 01:08:21 26 4
gpt4 key购买 nike

我有一个类似于 myspace/facebook 的社交网络。在我的代码中,你要么是某个人的 friend ,要么不是 friend ,所以我展示了与你成为 friend 的人的所有 Action (在这篇文章中,我将 Action 单独称为公告贴,以使其更容易形象化。

因此,每当有人发布公告时,它就会显示给所有在场的 friend 。

在 mysql 中你可以通过做这样的事情得到一个人的 friend 列表,

SELECT user_id FROM friends WHERE friend_id = 1 (user ID)

我想知道像 facebook 和其他一些网站如何显示您 friend 和您 friend 的 friend 的所有公告帖子?

如果有人有想法请展示一些代码,比如什么样的 mysql 查询?

最佳答案

答案是他们没有在 friend 表上进行选择,他们很可能使用非规范化的新闻事件表。我们在 DoInk.com 上实现了类似于 Facebook 的新闻提要,以下是我们的做法:

有一个“NewsEvent”的概念,它有一个类型、一个发起者(一个用户 ID)和一个目标用户(也是一个用户 ID)。 (您还可以为与事件相关的其他属性添加额外的列,或加入它们)

当一个用户在另一个用户墙上发帖时,我们会生成一个这样的事件:

INSERT INTO events VALUES (wall_post_event, user1, user1)

查看用户 1 的个人资料时,您可以选择用户 1 是发起者或目标的所有事件。这就是您显示个人资料提要的方式。 (您可以根据自己的隐私模型来选择并过滤掉事件。出于性能原因,您可以考虑在内存中执行此操作)

例子:

SELECT * FROM events WHERE initiator = user1 or target = user1 //to see their profile feed

SELECT * FROM events WHERE initiator IN (your set of friend ids) //to see your newsfeed

当您想查看与您的 friend 相关的所有事件的新闻源时,您可以执行查询,选择发起者在您的 friend 组中的所有事件。

避免使用子选择的实现,根据复杂性,它们不会扩展。

关于php - PHP/MySQL friend 的 friend ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977904/

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