如何从Eloquent/Laravel上的子查询进行查询


How to make querys from subqueries on Eloquent/Laravel

我有一个名为posts的表和另一个名为users的表。表posts有一个字段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;

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

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

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