php - 如何在 Laravel 5.5 中同时使用 GroupBy 和 OrderBy

标签 php mysql laravel-5 eloquent laravel-query-builder

我正在尝试查询消息并按对话对它们进行分组并获取每个对话中的最后一条消息,我的表格结构是

Table Messages(id(int), user_from(varchar), user_to(varchar), message(text), read(bool), chat_id(int), created_at(time_stamp), updated_at(time_stamp))

在这里搜索了一段时间后,我认为可以解决我的问题,但我不知道如何在 Laravel 5.5 中使用 Eloquent 或 Query Builder 实现它

SELECT * FROM messages WHERE id IN(
        SELECT MAX(id)
            FROM messages
            GROUP BY chat_id
    )

最佳答案

我知道这已经有一段时间了,您一定有解决方案。但是我遇到了类似的问题,只花了 1 个多小时,所以我认为值得在这里确认解决方案。

是的,使用Max 可以处理这里的情况。我使用了查询生成器,它可能是这样的:

DB::table('messages')
->selectRaw('max(id) as id, chat_id')  // you may add other fields
->groupby('chat_id')
->orderby('id')  // you may use other fields to sort
->get();

关于php - 如何在 Laravel 5.5 中同时使用 GroupBy 和 OrderBy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48468937/

相关文章:

javascript - 如何将值传递给 php 中同一页面中的查询?

php - 从 MySql 数据库中的 URL 中获取数据

php - 在 PHP 中包含文件时可以使用 $_GET 变量吗?有可能吗,甚至来自 AJAX 调用?

MYSQL 插入外键

mysql - 如何改进这个 SQL? (MySQL数据库)

php - 在谷歌应用引擎的laravel coaster cms中使特定文件夹可写

php - 我需要将 Laravel 切换到 Symfony 吗?

php - 获取html跨站,显示并获取元素值

php - 总结两个 SELECT 值

javascript - 当数组通过 props 时,Vue js v-for 不起作用