You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Query Builder中避免使用join实现多表关联查询?

Laravel Query Builder 无JOIN实现多表关联查询

要实现等价于以下SQL的查询(避免使用JOIN方法):

SELECT tasks.*
FROM projects, tasks
WHERE tasks.project_id = projects.id

有两种可行的Query Builder实现方案:

方案一:使用DB::raw指定多表

直接通过DB::raw()在from()方法中传入多个表名,完全匹配目标SQL结构:

DB::table(DB::raw('projects, tasks'))
    ->select('tasks.*')
    ->where('tasks.project_id', '=', 'projects.id');

方案二:使用crossJoin方法

利用crossJoin()生成笛卡尔积查询,再通过where()添加关联条件,最终执行效果与目标SQL一致:

DB::table('projects')
    ->crossJoin('tasks')
    ->select('tasks.*')
    ->where('tasks.project_id', '=', 'projects.id');

两种方案均未使用JOIN方法,且能正确生成符合需求的查询逻辑。

内容的提问来源于stack exchange,提问作者vbulash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 15:13:11