Laravel: Получить отношения ManyToMany, которые совместно используются несколькими пользователями одновременно - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть такие отношения:

Chat->belongsToMany(User)
User->belongsToMany(Chat)

Мне нужно запросить отношения таким образом, чтобы я получил чат, который принадлежит 2 пользователям одновременно.

Есть ли элегантный способсделать это с Laravel без циклического прохождения $user->chats, а затем внутри циклического прохождения через $chat->users и определить, является ли один из пользователей вторым пользователем?

1 Ответ

1 голос
/ 05 ноября 2019

Вы можете пойти с перекрестком, чтобы получить все общие чаты:

$commonChats = $userA->chats->intersect($userB->chats);

Или через запрос:

$commonChats = $userA->chats()->whereHas('users', function($q) use($userB) {
    $q->where('id', $userB->id);
})->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...