如何在 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 条件?

在 Laravel Fluent 中使用 Distinct

fluent监测点数据如何做成折线图

如何使用 Laravel 的流畅查询构建器混合原始 SQL 和非原始 SQL

如何做这个 laravel 子查询