如何在 Eloquent/Laravel 上查询子查询
Posted
技术标签:
【中文标题】如何在 Eloquent/Laravel 上查询子查询【英文标题】:How to make querys from subqueries on Eloquent/Laravel 【发布时间】:2014-05-12 05:42:46 【问题描述】:我有一个名为 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 对象。
【问题讨论】:
【参考方案1】:您也可以使用原始查询并检索用户对象
Post::with('user')
->from(DB::raw('(SELECT * FROM posts ORDER BY id DESC)sub'))
->groupBy('user_id')->take(3)->get();
【讨论】:
以上是关于如何在 Eloquent/Laravel 上查询子查询的主要内容,如果未能解决你的问题,请参考以下文章
php [Eloquent CheatSheet] Eloquent #laravel #eloquent的常见查询方法
我想将 MySQL 查询转换为 Laravel Eloquent / Laravel ORM