如何在Eloquent / Laravel中从子查询中进行查询

时间:2014-05-12 05:42:47

标签: php sql laravel eloquent

我有一个名为posts的表,另一个名为users。表格帖子有一个字段user_id。

我需要获取最后三个注册用户的最后一篇文章。我试过这样的事情:

Post::with('user')->groupBy('user_id')->orderBy('id','desc')->take(3)->get();

结果接近我的需要,但不完全正确,因为我正在获得最后三位注册用户的第一篇文章。

因此,我需要知道如何用Eloquent制作这样的东西:

SELECT * FROM (SELECT * FROM posts ORDER BY id DESC)sub GROUP BY user_id LIMIT 3;

我不想使用原始查询,因为正如您所看到的,我也需要检索用户对象。

1 个答案:

答案 0 :(得分:2)

您可以使用原始查询并检索用户对象

Post::with('user')
->from(DB::raw('(SELECT * FROM posts ORDER BY id DESC)sub'))
->groupBy('user_id')->take(3)->get();