如何在 Laravel 的 fluent 中进行子查询?
Posted
技术标签:
【中文标题】如何在 Laravel 的 fluent 中进行子查询?【英文标题】:How can I do subqueries in Laravel's fluent? 【发布时间】:2013-07-09 15:56:48 【问题描述】:假设我有这段 SQL:
select *
from `fluents`
inner join `tests` on `fluents`.`id` = `tests`.`fluent_test_id`
inner join (
select `fluents`.`id` from `fluents` order by `fluents`.`id` desc limit 10
) as j on `fluents`.`id` = `j`.`id`
order by `fluents`.`created_at`;
我知道我可以运行原始 SQL,但作为一项学习练习,我正试图将其转换为流利的并且失败得很惨,这甚至可能吗?
【问题讨论】:
使用 DB::query($sql) for laravel fluent 来执行查询。 我的意思是不使用查询生成器,而不仅仅是简单地执行原始 SQL。 ok 你用的是 laravel 3 还是 4? How to do this in Laravel, subquery where in的可能重复 【参考方案1】:我在我的项目中就是这样做的:
DB::table('fluents')->join('tests','tests.fluent_test_id','=','fluents.id')
->join(DB::raw("(select fluents.id from fluents order by `fluents`.`id` desc limit 10) as j"),'j.id','=','fluents.id')
->orderBy('fluents.created_at');
我希望这能有所帮助。
【讨论】:
以上是关于如何在 Laravel 的 fluent 中进行子查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel 的 Eloquent/Fluent 将每一行设置为相同的值?
如何使用 Laravel Fluent 按每个 ID(用户)计算列并使用 WHERE 条件?