Php laravel雄辩地获得多个用户之间的所有常见聊天
我在拉威尔做一个聊天项目Php laravel雄辩地获得多个用户之间的所有常见聊天,php,laravel,eloquent,Php,Laravel,Eloquent,我在拉威尔做一个聊天项目 我想获得多个用户共同参与的所有聊天 我阅读了where条款的文档,但没有找到解决这种情况的方法 我搜索了很多,想找到任何可以满足我需要的魔法功能,但我找不到任何帮助 关系: 假设我有一张这样的桌子 收件人表 我想获取用户[1,2,3]所在的聊天室id 而且他们必须参加同一个聊天 我希望它能回来 // i tried this snippet but it's only returning the chats of a single user $user_id = $r
我想获得多个用户共同参与的所有聊天
我阅读了where条款的文档,但没有找到解决这种情况的方法 我搜索了很多,想找到任何可以满足我需要的魔法功能,但我找不到任何帮助 关系: 假设我有一张这样的桌子
收件人表 我想获取用户[1,2,3]所在的聊天室id
而且他们必须参加同一个聊天 我希望它能回来
// i tried this snippet but it's only returning the chats of a single user
$user_id = $request->user()['id'];
return Chat::whereHas('recipients', function ($query) use ($user_id) {
$query->where('user_id', $user_id);
})->get();
使用其中()
并指定行数:
$user_ids = [1, 2, 3];
return Chat::has('recipients', '=', count($user_ids))
->whereHas('recipients', function ($query) use ($user_ids) {
$query->whereIn('user_id', $user_ids);
}, '=', count($user_ids))->get();
聊天室和收件人之间的关系是什么?聊天室---一对多---收件人我想提供我的DB模式的图片,但有点太乱,15个表都相互连接,非常接近,但是当我通过[1,3]时,它返回id为2的聊天室>>这应该返回空值,因为1和3之间没有聊天,它是1,2号和3号我想计数的支票可能会像你一样解决它,但它不是。是的,它起作用了,谢谢!你能解释一下为什么第一个答案不起作用以及为什么这个答案起作用吗?我不知道有什么不同。第一个查询匹配的聊天至少包含给定的用户,但也可能包含其他用户。新查询只匹配恰好包含给定用户的聊天。
// i tried this snippet but it's only returning the chats of a single user
$user_id = $request->user()['id'];
return Chat::whereHas('recipients', function ($query) use ($user_id) {
$query->where('user_id', $user_id);
})->get();
$user_ids = [1, 2, 3];
return Chat::has('recipients', '=', count($user_ids))
->whereHas('recipients', function ($query) use ($user_ids) {
$query->whereIn('user_id', $user_ids);
}, '=', count($user_ids))->get();