gpt4 book ai didi

mysql - Cakephp互惠友情系统

转载 作者:行者123 更新时间:2023-11-29 09:03:38 25 4
gpt4 key购买 nike

我花了一周左右的时间试图弄清楚如何在 CakePHP 中建立一个合适的友谊系统。我读过thisthis线程,但我无法让它工作。

我已经阅读了很多与此相关的主题,但似乎没有人有合适的示例。

我目前有一个用户表(id、用户名、密码、电子邮件等)和一个友谊表(id、user_to、user_from、状态)。

第 1 步 - 好友请求

如果用户发出友谊请求,则会插入一行,其中包含请求的 user_id 和请求友谊的用户的 user_id,因此它可能如下所示:

id |用户来自 | user_to|状态

<小时/>

1 | 1 | 2 | 0

通过选择 user_to = 2 的所有记录,我可以轻松显示 user_id = 2 的待处理好友

第 2 步 - 确认友谊

我已经设置好了,这样user_id 2现在可以看到user_id 1想成为 friend ,如果他点击确认链接,状态将更改为1,见下文

id |用户来自 | user_to|状态

<小时/>

1 | 1 | 2 | 1

我创建了各种检查,以便该行保持唯一。

第 3 步 - 向好友展示

我认为这很容易,如果我想显示 user_id = 1 的 friend ,那么我只需使用 user_from = 1 OR user_to = 1 进行选择,但这不起作用。

User_id 1 可以是请求者,但也可以被请求,因此 JOIN 会显示奇怪的结果。

有人知道解决办法吗?如果我没有把整个事情做对,我很乐意重建整个系统!也欢迎任何正确方向的提示...

最佳答案

这是我的解决方案:困难在于正确的请求,因为好友请求可以交叉(如果A询问B或B询问A将以相反的方式存储在表的“to”和“from”字段中) 。让我们这样做,并使用 UNION 和别名来独立于下面的关系表从任何用户那里获取好友。

  1. [ friend ] 表(关系):to|from|statut(待定、已确认)
  2. “to”和“from”> [users] 表的foreign_keys 约束

下面的请求总是给出想要的结果! (将 %d 替换为用户 ID 或 session 中的用户 ID

SELECT
users.userNickname,
friends.to AS friendUser,
friends.from AS currentUser,
friends.statut
FROM
users
INNER JOIN
friends
ON
users.userId = friends.to
WHERE
friends.from = '%d'
UNION
SELECT
users.userNickname,
friends.from AS friendUser,
friends.to AS currentUser,
friends.statut
FROM
users
INNER JOIN
friends
ON
users.userId = friends.from
WHERE
friends.to = '%d'

关于mysql - Cakephp互惠友情系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766563/

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