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 获取数据

Laravel - Eloquent:使用用户发布表从用户那里获取帖子

Laravel 4.2 Eloquent 获取特定用户和特定角色