Используя Laravel 5, у меня есть база данных, состоящая из пользователей, разговоров и сообщений, соединенных сводной таблицей между пользователями и диалогами, которые называются «chat_user» (и сформированы с помощью отношений BelongsToMany). Схема ниже:Laravel Eloquent querying сводные таблицы
| USERS | CONVERSATION | MESSAGES | CONVERSATION_USER |
| id | id | id | user_id |
| username | timestamps | conversation_id | conversation_id |
| password | | user_id | |
| | | message | |
Поэтому в основном я пытаюсь использовать conversation_user, чтобы получить все conversation_ids, касающееся зарегистрированного пользователя, а затем использовать эти результаты, чтобы получить последнее сообщение, относящееся к этому разговору.
В терминах SQL это соответствует:
SELECT messages.`message` FROM conversation_user INNER JOIN messages ON
conversation_user.conversation_id=messages.conversation_id
WHERE conversation_user.user_id=1 ORDER BY messages.id DESC
Однако я не могу понять, как добиться этого с красноречив!
Работает как шарм –
Если я ввел еще одну таблицу в смесь под названием РАБОЧИЕ с внешним ключом в таблице разговоров называется JOB_ID, любая идея, как я мог бы использовать несколько WhereHas? –
Если вы укажете связь, вы можете просто направить другой вызов 'whereHas'. Как 'Message :: whereHas ('convers.users', ...) -> whereHas ('convers.job', ...) -> get()' – lukasgeiter