Laravel - Order By & Group По странным результатам - PullRequest
0 голосов
/ 10 октября 2019

Настройка:

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

Но группа по команде, похоже, игнорирует порядок подзапроса! (независимо от того, является ли сортировка ASC или DESC, результаты одинаковы).

------------------------------------------------------------------------------
id    body         user_id  recipient_id  conversation_id  created_at 
1     <p>test</p>  1        3             -1-3-            2019-10-06 20:00:00
2     <p>test</p>  1        3             -1-3-            2019-10-06 20:10:00
3     <p>test</p>  3        1             -1-3-            2019-10-06 20:20:00
4     <p>test</p>  2        1             -1-2-            2019-10-06 20:00:00
5     <p>test</p>  1        2             -1-2-            2019-10-06 20:10:00
6     <p>test</p>  1        2             -1-2-            2019-10-06 20:20:00
------------------------------------------------------------------------------

ПРИМЕЧАНИЕ. Я не беспокоюсь об условиях where для фильтрации данных пользователем. * Попытки:

$conversations = Message::fromSub(function ($query) {
    $query->from('messages')
          ->orderBy('conversation_id')
          ->orderBy('created_at', 'DESC');
}, 'm')->groupBy('conversation_id')->get();
$conversations = DB::select(DB::raw("
    SELECT *
    FROM (
        SELECT *
        FROM messages
        ORDER BY `created_at` DESC
    ) AS R
    GROUP BY R.`conversation_id`
"));

Я в полном замешательстве: (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...