如何在Laravel中连接3个以上的表
我可以在Laravel加入3个表Laravel雄辩地如下:如何在Laravel中连接3个以上的表,laravel,eloquent,Laravel,Eloquent,我可以在Laravel加入3个表Laravel雄辩地如下: B D E +-----------+ +-----------+ +-----------+ | *id | | *id | | *id | | | | B_id | | | | | /| E_id
B D E
+-----------+ +-----------+ +-----------+
| *id | | *id | | *id |
| | | B_id | | |
| | /| E_id |\ | |
| |-----| |-----| |
| | \| |/ | |
| | | | | |
+-----------+ +-----------+ +-----------+
$queries = DB::table('D')
->join('B', 'B.id', '=', 'D.B_id')
->join('E', 'E.id', '=', 'D.E_id')
->select('*')
->get();
因此,我如何连接3个以上的表,如下所示:
A B D E
+-----------+ +-----------+ +-----------+ +-----------+
| *id | | *id | | *id | | *id |
| B_id | | | | B_id | | |
| |\ | | /| E_id |\ | |
| +------| |-----| |-----| |
| |/ | | \| |/ | |
| | | | | | | |
+-----------+ +-----------+ +-----------+ +-----------+
我尝试在SQL中执行以下操作:
SELECT * FROM A,B,C,D
WHERE B.id=A.B_id
AND B.id=D.B_id
AND D.E_id=E.id
使用交叉联接,然后在查询的
where
部分使用联接条件是一种不好的做法
您需要将第二个查询转换为使用内部联接
(或者简单地使用相同的联接
)
那么,向雄辩的转变将更加直接。在你的情况下,你可以写:
SELECT *
FROM B
JOIN A ON B.id=A.B_id
JOIN D ON B.id=D.B_id
JOIN E ON E.id=D.E_id
那么,您的雄辩提问将是直截了当的:
$querys=DB::table('B')
->join('A','B.id','=','A.B_id')
->联接('D','B.id','=','D.B_id'))
->连接('E','E.id','=','D.E_id'))
->选择(“*”)
->get();
您可以创建数据库\u视图
,阅读相关内容并使用sqlyog
应用程序