MySQL到Eloquent查询

时间:2017-03-25 15:58:03

标签: mysql eloquent

我的查询存在一些问题。我试图获取每个类别'的最新记录。从表中,但我无法弄清楚如何在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();

1 个答案:

答案 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}}