Laravel 5.2 - 检查两个用户之间的对话是不是存在

Posted

技术标签:

【中文标题】Laravel 5.2 - 检查两个用户之间的对话是不是存在【英文标题】:Laravel 5.2 - Check if conversation between 2 users existLaravel 5.2 - 检查两个用户之间的对话是否存在 【发布时间】:2016-11-19 14:15:35 【问题描述】:

我正在尝试在 Laravel 中实现一个私人消息系统,但我无法检查是否存在对话。

我有 3 张桌子:

conversations
- id

users
- id
- name
- etc

conversation_user (pivot)
- user_id
- conversation id

我的模型 Conversation belongsToMany Users 和 User belongsToMany Conversations。

添加对话并将用户附加到数据透视表工作正常,但我找不到检查两个用户之间是否存在对话的干净方法。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

试试下面的查询,看看是否对你有帮助:

Conversation::whereHas('users', function($query) use ($userIds) 
    $query->whereIn('id', $userIds);
)->exists();

【讨论】:

【参考方案2】:

使用@ruffles 回答并稍作改动:

$hasConversation = Conversation::whereHas('users', function($query) use ($userIds) 
    $query->whereIn('id', $userIds);
)->count() === 2;

【讨论】:

以上是关于Laravel 5.2 - 检查两个用户之间的对话是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

检查具有特定id的用户是否已登录laravel 5.2

如何在laravel 5.2登录时检查电子邮件(确认/否)?

有没有办法检查 laravel 5.2 中的几个输入是不是唯一?

中间件身份验证不适用于 Web Laravel 5.2

在laravel 5.2中以编辑形式进行图像验证

Laravel 5.2 更改用户密码功能