我正在尝试查询消息并按对话对它们进行分组并获取每个对话中的最后一条消息,我的表格结构是
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/