я работал над проектом чата в laravel
я хочу собрать все чаты, в которых участвуют несколько пользователей вместе
я прочитал документы о предложениях where, но не смог найти никакого решения для этой ситуации
я много искал, чтобы найти любую волшебную функцию, которая может делать то, что мне нужно, но я не мог найти никакой помощи
Связи:
user --------- one to many ---> chat
recipient ---- one to one ----> user
chat --------- one to many ----> recipient
скажем, у меня есть такая таблица
Таблица получателей
|--------------|----------------|----------------|
| id | user_id | chat_id |
|--------------|----------------|----------------|
| 1 | 1 | 2 |
| 2 | 2 | 2 |
| 3 | 3 | 2 |
| 4 | 3 | 1 |
| 5 | 2 | 3 |
| 6 | 2 | 1 |
|--------------|----------------|----------------|
я хочу получить chat_id, где пользователи [1,2,3]
должны участвовать в одном и том же чате
я ожидаю, что он вернется 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();