Laravel, отношения многие ко многим. Как выбрать запись из одной таблицы по id ссылающихся записей из другой таблицы

Есть таблица чатов.

введите сюда описание изображения

В которой содержатся id чатов и другие их характеристики (тип чата и т.д).

Есть таблица пользователей и промежуточная (связующая) таблица.

При создании чата в промежуточную таблицу записываются id пользователей, состоящих в этом чате.

введите сюда описание изображения

Модель называется Chat.

Когда я делаю выборку

$chat = Chat::find(3);
$users = $chat->users();

У меня, понятно, извлекаются пользователи, принадлежащие этому чату.

Вопрос в том, как мне выбрать чат не по его id, а по id пользователей состоящих в нем?

То есть, если я передаю массив из 2, 14, 18, и тип чата 'group' то выбралась бы запись с id 4 из таблицы чатов.

Находил в документации примеры, но нужного результата не получил

пробовал так (всё внутри модели Chat)

$chat = $this->belongsToMany(User::class)->where('id', $members_ids);
//...
$chat = $this->belongsToMany(User::class)->whereIn('user_id', '=', $members_ids);
//...
$chat = $this->belongsToMany(User::class)->whereIn('id', '=', $members_ids);

не работает, и как сюда вставить тип чата непонятно..

Может быть нужно писать просто прямой запрос на выборку, с джоинами?

или все таки можно как то красиво и коротко написать, связь моделей все таки есть, мне остается только отфильтровать по данным из связанной таблицы


Ответы (0 шт):