Я пытаюсь сделать основной твиттер-приложения для обмена сообщениями уравнения с Laravel 5.OrderBy в Laravel 5
Есть сообщения и отправителей. Я пытаюсь написать запрос, который отображает последние сообщения, отправителя и общее количество сообщений, отображаемых отправителем. Запрос должен показывать только последнее сообщение для каждого пользователя. например если один человек отправил 6 сообщений за последние 5 минут, он будет показывать только последний из них.
То, что я пытаюсь сделать красноречивым способом является:
- Запрос последние сообщения, GroupBy Sender
- Выберите отправителями имя, Join имя отправителя на запрос 1
- графа запроса сообщения GroupBy Sender, присоединяться к запросу 2
Этот процесс может быть принципиально неправильным.
Тогда, на мой взгляд, я бы сделал: Sender A - (31 сообщение), Привет, это мое сообщение.
ТАБЛИЦЫ
У меня есть 2 таблицы
Отправители
ID | Имя
и
Сообщения
ID | SenderID | Сообщение | Created_at
QUERY
$latestMessages = Sender::
join('messages', 'messages.sender_id', '=', 'senders.id')
->OrderBy('messages.created_at', 'asc')
->GroupBy('senders.id')
->get();
ПРОБЛЕМА
Это выводит старое сообщение, а не самого нового. (также, я не могу понять, как подсчитывать сообщения от каждого отправителя и присоединяться к нему).
Я попытался изменить «ASC» и «DESC» безрезультатно. Когда я удаляю GroupBy, он делает показывает сообщения в нужном порядке (от самого нового до самого старого), но я не могу понять, как показывать только 1 на отправителя.
ВОПРОС Может кто-нибудь объяснить, как добиться этого с Laravel 5, или на полу в моем подходе и что я должен выглядеть делать?
Если вы можете объяснить, как запрос и присоединиться к count() в Eloquent, это было бы невероятно.
Используйте эту http://softonsofa.com/tweaking-eloquent-relations-how -to-get-latest-related-model /. 'Group by' и' order by' не работают вместе, как и ожидалось в MySQL. –