gpt4 book ai didi

php - 选择待处理请求(Friendship Restful Api)PHP 和 MySql

转载 作者:可可西里 更新时间:2023-11-01 08:25:35 26 4
gpt4 key购买 nike

我想为 Android 开发一个社交网络应用程序,用户可以在其中发送和接受好友请求。我已经做到了。用户可以像这样向其他人发送请求:

用户表(用户)

id                                               
name
email
...

关系表(关系)

user_one_id - id of user who is sending the request 
user_two_id - id of user who is receiving request
status - 0 for pending request, 1 for accepting request and so on..
action_user_id - which user has done some action in table

但是当我使用选择查询时,我没有得到待处理请求的确切数量。

现在我将向您展示一个示例,其中 ID 1 的用户正在发送请求,而 ID 2 和 ID 4 的用户正在接收请求。

Relationship table

现在,如果我尝试使用此查询获取挂起的请求:

"SELECT u.name, r.user_one_id, r.user_two_id, r.status FROM users u, relationship r WHERE r.user_one_id = ? OR r.user_two_id = ? AND r.status = 0 AND u.id = r.user_one_id AND r.action_user_id != ?"

需要的参数有:user_one_id, user_two_id and action_user_id

在此示例中,ID 为 1 的用户已登录,他应该看不到任何待处理的请求,因为他没有收到任何请求,但是如果我从上面使用参数 1 发送此查询> user_one_id1user_two_id1action_user_id,我是得到这样的 JSON 响应:

 {
"error": false,
"requests": [
{
"name": "Dusan" // user with id 1
},
{
"name": "Dusan"
},
{
"name": "Jelena Radenkovic" // user with id 2
},
{
"name": "Jelena Radenkovic"
},
{
"name": "Stefan Dimitrijevic" // user with id 4
},
{
"name": "Stefan Dimitrijevic"
}
]
}

但是如果用户没有发送任何请求,这将是完美的,比如 ID 为 2 和 ID 为 4 的用户。如果我发送带有 2 个参数的相同查询,那么我只会得到一个应该的记录。这就是我得到的:

    {
"error": false,
"requests": [
{
"name": "Dusan" // getting only this user with id 1 because he sent request to the user with id 2
}
]
}

在我向其他用户发送请求之前,这是可以的。我希望我已经很好清楚地解释了一切。但如果不清楚,请告诉我,我会解释更多或更好。提前致谢。

最佳答案

根据您的模式 user_one_id 是发送者 ID,user_two_id 是接收者 ID,因此要获得当前用户(即登录用户)的确切待处理请求,您的查询将是如下:(此时不需要使用action_user_id)

SELECT u.name, r.user_one_id, r.user_two_id, r.status FROM users u, relationship r WHERE r.user_two_id = <current_user_id> AND r.status = 0 AND u.id = r.user_one_id

或者您也可以在这种情况下使用 join:

SELECT u.name, r.user_one_id, r.user_two_id, r.status FROM relationship r join users u on u.id = r.user_one_id WHERE r.user_two_id = <current_user_id> AND r.status = 0

现在,如果你想知道当前用户发送了多少请求,那么将 user_one_id 更改为 user_two_id,如下所示:

SELECT u.name, r.user_one_id, r.user_two_id, r.status FROM users u, relationship r WHERE r.user_one_id = <current_user_id> AND r.status = 0 AND u.id = r.user_two_id

并且在 join 中也有同样的变化。

关于php - 选择待处理请求(Friendship Restful Api)PHP 和 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36386648/

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