gpt4 book ai didi

php - 如何显示数据库中两个用户之间的相互关系?

转载 作者:行者123 更新时间:2023-11-29 12:05:54 24 4
gpt4 key购买 nike

我正在尝试显示两个用户之间的关系。我只想向 Relations 表中插入一行(请参阅下面的结构)。但我的脚本显示用户 B 是他自己的 friend - 这是不对的。

这是我的数据库的结构(带有示例):

Users
id|email|password|name|pic_url|friend_count
1 |a@.. |aaaaaaaa|A |http...|1
2 |b@...|bbbbbbbb|B |http...|0

Relations
id|user_id|friend_id|status(0 and 1)
1 |1 |2 |1(if accepted)

我做错了什么?这是我的查询:

SELECT Relations.friend_id, Users.name,Users.email,Users.pic_url FROM Relations
INNER JOIN Users
ON Relations.friend_id = Users.id

WHERE Relations.user_id = $user_id
OR Relations.friend_id = $user_id
AND Relations.status = 1

最佳答案

我建议在 Relations 表中插入两行。

id|user_id|friend_id|status(0 and 1)
1 |1 |2 |1(if accepted)
2 |2 |1 |1(if accepted)

例如,用户 A 向 B 发送好友请求。在 B 接受此请求之前,两行的 status 都将为 0

接受查询:(用户B)

UPDATE Relations SET status=1 WHERE (user_id=$user_id AND friend_id=$friend_id) OR (user_id=$friend_id AND friend_id=$user_id)

选择查询:

SELECT Relations.friend_id, Users.name, Users.email, Users.pic_url FROM Relations
INNER JOIN Users
ON Relations.friend_id = Users.id

WHERE Relations.user_id = $user_id
AND Relations.status = 1
<小时/>

更新:如果您确实只想插入一行,则需要执行两个查询 - 一个用于添加用户 B 的好友,另一个用于将用户 B 添加到的好友他们的 friend 列表。

SELECT Relations.friend_id, Users.name, Users.email, Users.pic_url FROM Relations
INNER JOIN Users
ON Relations.friend_id = Users.id

WHERE Relations.user_id = $user_id
AND Relations.status = 1

SELECT Relations.user_id, Users.name, Users.email, Users.pic_url FROM Relations
INNER JOIN Users
ON Relations.user_id = Users.id

WHERE Relations.friend_id = $user_id
AND Relations.status = 1

您的问题是您选择了friend_id,这意味着如果您以用户B 的身份执行查询,friend_id 将为2 - 用户B。(请参阅您的表示例)

您应该查看this question有关性能的更多信息。

关于php - 如何显示数据库中两个用户之间的相互关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31492252/

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