Запрос Laravel, отправляющий разные результаты для одной и той же проблемы

#php #mysql #laravel

#php #MySQL #laravel

Вопрос:

Привет, я пытаюсь создать единую систему обмена сообщениями на LARAVEL. Все работало нормально, пока для некоторых пользователей он не начал показывать другой результат, чем ожидалось. И это происходит только для некоторых пользователей.. Что не так с этим запросом

 $id =$receiver->id;
$messages = Message::where(function ($query) use ($id) {
        $query->where('user_id', '=', Auth::user()->id)
              ->where('receiver_id', '=', $id);
        })->orWhere(function ($query) use ($id) {
            $query->where('user_id', '=', $id)
                ->where('receiver_id', '=', Auth::user()->id);
        })->get();
  

После того, как я верну $messages, результат будет таким…

Рабочий результат: сообщения поступают последовательно..

Рабочий результат

В представлении это выглядит так ..

введите описание изображения здесь

Тот же запрос с плохим результатом

введите описание изображения здесь

В представлении вы можете видеть, что даты не выровнены по порядку

введите описание изображения здесь

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

Комментарии:

1. какая проблема.? вы получаете

Ответ №1:

Ваша дата отображается как UTC в формате ISO-8601, но я думаю, что дата не связана с вашей проблемой, если вы не заказываете с меткой времени.
Я предлагаю вам использовать orderBy with id , он может легко решить вашу проблему :

 $messages = Message::where(function ($query) use ($id) {
        $query->where('user_id', '=', Auth::user()->id)
              ->where('receiver_id', '=', $id);
        })->orWhere(function ($query) use ($id) {
            $query->where('user_id', '=', $id)
                ->where('receiver_id', '=', Auth::user()->id);
        })
        ->orderBy('id', 'ASC')
        ->get();
  

Комментарии:

1. Большое вам спасибо, я действительно не думал о заказе, поскольку он с самого начала давал правильный результат.. Поскольку я заполняю сообщения сверху вниз вместо DESC, я использовал ASC, и это сработало. Спасибо за вашу помощь. Если вы можете отредактировать и сделать ASC, я бы пометил его правильно.

2. Opps, извините. Я отредактировал DESC как ASC. Приятно слышать, что это помогло