Как в Laravel достать модель, у которой две связи с конкретными значениями?
В данное время пишу функционал для создания сообщений на Laravel. Таблицы такие:
Обсуждения, Участники, Сообщения. (threads, participants, messages)
Логика такая - между двумя пользователями создаётся одно обсуждение, у обсуждения, добавляется два участника. Затем все сообщения между участниками идут в таблицу сообщения.
Когда отправляется сообщение, мне необходимо проверить - есть ли между двумя участниками обсуждение, если есть то добавить его ID в сообщение (thread_id).
Возникла проблема при поиске такого обсуждения - как мне правильно вытащить обсуждения, у которых именно два таких пользователя?
Насколько я понял, у Вас Обсуждение имеет множество Участников. При поиске Обсуждения, воспользуйтесь методом whereHas('participants', function($query){...}) для того, чтобы указать идентификаторы Участников или, скажем, условие их выборки по свойствам либо промежуточной, либо основной таблицы...
Нет, у обсуждения только два участника (это просто переписка на сайте между двумя пользователями, мне надо чтобы если пользователь отправил другому сообщение и между ними уже велась переписка, новое сообщение продолжило эту переписку, а если переписки не было, то она создалась).
Как Вы организовали связи? threads belongsTo participant (1 and 2) или hasMany? Внешний ключ на participants находится в таблице threads или в pivot таблице?