首页 > 解决方案 > 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 后,结果是这样的......

工作结果:消息按顺序发送..

工作成果

在视图中它显示如下。.

在此处输入图像描述

相同的查询错误结果

在此处输入图像描述

在视图中,您可以看到日期未按顺序排列

在此处输入图像描述

如果您能提供帮助,我真的无法弄清楚出了什么问题,我将不胜感激..

标签: phpmysqllaravel

解决方案


您的日期使用 ISO-8601 格式转换为 UTC,但我认为日期与您的问题无关,如果您不使用时间戳订购。
我建议您使用orderBywith 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();

推荐阅读