我的查询存在一些问题。我试图获取每个类别'的最新记录。从表中,但我无法弄清楚如何在Laravel中编写查询。
我在MySQL中使用了查询,但在翻译时没有真正的好运。
MySQL查询如下所示:
SELECT *
FROM messages
WHERE id IN (
SELECT MAX(id)
FROM messages
GROUP BY conversation_id
);
我在Laravel尝试过类似的东西,但它似乎不起作用:
return self::where(function($query){
$query->select(max(['id']))
->from('messages')
->groupBy('conversation_id');
})
->get();
答案 0 :(得分:0)
(代表OP发布)。
感谢AlexM的评论,我明白了。
return self::whereIn('id', function($query){
$query->selectRaw('max(id)')
->from('messages')
->orderBy('created_at', 'desc')
->groupBy('conversation_id');
})
->get();
是我的第一个解决方案但是效果不好。它按预期选择了两个记录,但不是最后一个。
然后我想出了使用selectRaw而不是select的想法,这完全解决了我的问题。对于任何感兴趣的人来说,最终查询看起来像这样:
{{1}}