【问题标题】:Laravel - named subquery using Query BuilderLaravel - 使用查询生成器命名子查询
【发布时间】:2015-07-10 07:37:41
【问题描述】:

在MySQL subqueries 文档中有一个子查询示例:

SELECT ... FROM (subquery) [AS] name ...

这是我要转换的原始查询:

select SUBQUERY_NAME.* from (select id, name from items) AS SUBQUERY_NAME

在 Laravel Query Builder 中有什么方法可以在不使用 DB::raw() 的情况下做到这一点?

【问题讨论】:

    标签: php mysql laravel subquery query-builder


    【解决方案1】:

    不幸的是,没有。查询生成器有其局限性,更复杂的查询超出了它的范围,这就是DB::raw() 存在的原因。但是,如果你想让它更优雅一点并使用查询生成器生成子查询,你可以这样做:

    $subquery = DB::table('items')->select('id', 'name')->toSql();
    DB::table(DB::raw($subquery . ' as subquery_name'))->select('subquery_name.*');
    

    【讨论】:

    • 您可以添加括号以避免 SQL 语法错误'('.$subquery->toSql().') as subquery_name'
    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 2021-12-03
    • 2017-03-29
    • 2021-02-20
    • 2018-07-03
    • 2015-12-13
    • 2019-06-25
    相关资源
    最近更新 更多