#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. Приятно слышать, что это помогло