php - OrderBy 后的 GroupBy 用于 Laravel 中的复杂查询

标签 php mysql database laravel laravel-5

这是我的代码,用于为每次聊天获取消息并将它们分组

$query = DB::table('chats');

    $otherUserId= $request->input('loadId');
    if($otherUserId==0){
        $query->join('users as u1', 'u1.id', '=', 'chats.user1_id');
        $query->join('users as u2', 'u2.id', '=', 'chats.user2_id');
        $query->join('messages', 'messages.chat_id', '=', 'chats.id');
        $query->where('chats.user1_id', '=', '{$userId}');
        $query->orWhere('chats.user2_id', '=', '{$userId}');
        $query->select('messages.chat_id', 'messages.from_id', 'u1.id as    user1_id', 'u2.id as user2_id', 'messages.created_at', 'messages.body', 'messages.read', 'u1.name as user1_name', 'u2.name as user2_name', 'u1.picture_url as user1_pic', 'u2.picture_url as user2_pic');

        $query->orderBy('messages.created_at ', 'DESC');
        $query->groupBy('chat_id');
        $messages = $query->paginate(4);

当我运行查询时,结果与预期不符 OrderBy 在 group by 之后。我已经尝试了很多但找不到解决方案。我也尝试过此解决方案,但无法使其正常工作。 Order By before Group By using Eloquent (Laravel)

请帮助我,我已经浪费了很多时间来解决这个问题。在此先感谢您对我的帮助。

最佳答案

在分页前一行添加如下代码

dd($query->toSql());

这将返回查询字符串以调试 mysql 查询。 如果您仍然无法找出发生了什么,请将其粘贴到此处以帮助您。

关于php - OrderBy 后的 GroupBy 用于 Laravel 中的复杂查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39052629/

相关文章:

php - 使用 XDebug 和 PHPStorm、MAMP Pro、OS X 进行本地命令行调试

php - RSA加密: Create a cipher text in PHP and decrypt it in Javascript

python - 使用 MySQL python 模块插入或更新行是否存在

mysql - SQL 多连接整理

sql - 向非程序员解释为什么 "Just add another column to the DB"是个坏主意

database - MS Access - 计算

php - IE6位置固定问题

php - 为什么空数组比任何数字都大?

mysql - 组合两个查询并使用 HAVING

mysql - 存储位置数据的最佳方式