Сбор заказов по новейшей модели отношений Laravel - PullRequest
0 голосов
/ 30 апреля 2019

У меня есть две модели Chat и ChatMessage.

Chat имеет много ChatMessage, я хочу получить все Chat, заказанные ChatMessage created_at

Так что, если created_at из ChatMessage имеет дату, ближайшую к сегодняшнему дню, этот чат должен быть заказан первым.

как это могло быть сделано?

У меня просто есть это

Chat::leftJoin('chat_messages', 'chats.id', '=', 'chat_messages.chat_id')
->orderBy('chat_messages.id', 'DESC');

but this does not work. i am not getting the newest row of chat_messages.

1 Ответ

0 голосов
/ 30 апреля 2019

Вы должны заказать их по столбцу created_at:

$chats = Chat::select('chats.*')
    ->join('chat_messages', 'chats.id', '=', 'chat_messages.chat_id')
    ->orderBy('chat_messages.created_at', 'desc')
    ->get();

Я проверил это с базой данных из 10 чатов и 100 сообщений, где последнее сообщение было создано после других, а последнее сообщение для чата с идентификатором № 9.

Поэтому, когда я выполняю приведенный выше код и извлекаю первую комнату чата, я получаю следующее:

App\Chat { #3401
    id: 9,
    created_at: "2019-04-30 17:12:34",
    updated_at: "2019-04-30 17:12:34",
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...