【问题标题】:How to write nested joins with Laravel Query builder?如何使用 Laravel 查询构建器编写嵌套连接?
【发布时间】:2016-11-25 16:37:57
【问题描述】:

我有下一个连接顺序的 SQL 查询(两个 JOIN 嵌套在 LEFT JOIN 中):

SELECT *
FROM mytable
LEFT JOIN table1
  JOIN table2 ON table2.id = table1.document_id
  JOIN table3 ON table3.content_id = table2.id
ON table1.link_id = mytable.link_id

如何使用 Laravel 查询构建器编写此查询?

我的方式:

$query = Mytable::select('*')
    ->leftJoin(DB::raw('table1
        JOIN table2 ON table2.id = table1.document_id
        JOIN table3 ON table3.content_id = table2.id
    '), 
    'table1.link_id', '=', 'mytable.link_id');

它可以工作,但是没有 DB::raw() 有什么办法吗?也许是$join->nest()

【问题讨论】:

    标签: php sql postgresql laravel join


    【解决方案1】:

    联接不是嵌套的,它们只是用于限制可行记录的数量。

    $query = Mytable::select('*') ->leftJoin('table1', 'table1.link_id', '=', 'mytable.link_id') ->join('table2', 'table2.id', '=', 'table1.document_id') ->join('table3 ', 'table3.content_id', '=', 'table2.id');

    【讨论】:

    • 这不是解决方案。这个查询看起来像SELECT * FROM mytable LEFT JOIN table1 ON table1.link_id = mytable.link_id JOIN table2 ON table2.id = table1.document_id JOIN table3 ON table3.content_id = table2.id
    猜你喜欢
    • 2018-07-17
    • 2016-11-16
    • 1970-01-01
    • 2019-06-17
    • 2016-02-05
    • 2021-01-14
    • 2015-03-02
    • 2021-01-22
    • 2014-12-24
    相关资源
    最近更新 更多