如何使用 Laravel 查询构建器编写嵌套连接?
Posted
技术标签:
【中文标题】如何使用 Laravel 查询构建器编写嵌套连接?【英文标题】:How to write nested joins with Laravel Query builder? 【发布时间】: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()
?
【问题讨论】:
【参考方案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
以上是关于如何使用 Laravel 查询构建器编写嵌套连接?的主要内容,如果未能解决你的问题,请参考以下文章