laravel eloquent获取多个用户之间的所有常见聊天
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel eloquent获取多个用户之间的所有常见聊天相关的知识,希望对你有一定的参考价值。
我正在拉拉维尔做一个聊天项目 我想得到多个用户一起参与的所有聊天 我阅读了where子句的文档,但无法找到解决这种情况的方法
我搜索了很多,以找到任何可以做我需要的魔法功能,但我找不到任何帮助
Relations:
user --------- one to many ---> chat
recipient ---- one to one ----> user
chat --------- one to many ----> recipient
说我有这样一张桌子
Recipients Table
|--------------|----------------|----------------|
| id | user_id | chat_id |
|--------------|----------------|----------------|
| 1 | 1 | 2 |
| 2 | 2 | 2 |
| 3 | 3 | 2 |
| 4 | 3 | 1 |
| 5 | 2 | 3 |
| 6 | 2 | 1 |
|--------------|----------------|----------------|
我想得到用户[1,2,3]的chat_id 他们必须参加同一个聊天
我期待它返回2
// 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();
答案
使用whereIn()
并指定行数:
$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();
以上是关于laravel eloquent获取多个用户之间的所有常见聊天的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 混合获取 Eloquent 急切加载嵌套多个模型
Laravel 5.2 Eloquent ORM 从 3 个表中获取数据
如何使用 Laravel Eloquent 在不同服务器上的多个数据库之间执行连接查询?
在一个查询中使用具有多个关联数组的 laravel eloquent 获取数据