拉拉维尔急切加载左连接多个'on'语句



看到其他一些关于的帖子,发现可以使用Laravel EloquentleftJoin()来执行带有倍数"on"子句的查询。我想知道(在laravel文档中没有发现任何内容(是否有可能构建一个带有多个"on"子句的热切加载的雄辩查询生成器

select * from tablea ta left join tableb tb on tablea.id = tableb.table_a_id and tableb.foo = ? left join tablec tc on tableb.id = tablec.table_b_id group by ta.name

类似于:

TableA::with([
'tableb'=> fn($q)=>$q->on()->on(), 
'tableb.tablec'=> fn($q2)=>$q2->on()
])->get();

Laravel有这样的东西吗?还是我有使用leftJoin('tableb',fn($q)=>$q->on()->on())??

是。可能的

应该是这样的:

$tableA = AppTableA::with(['tableb' => function ($query) {
$query->where('example', 'like', '%test%');
}])->get();

或类似以下内容。

$tableA = AppTableA::whereHas('tableb', function ($q) {
$q->where('tableb.date', '<', 'tablea.date'); // or whatever the columns are
})->with('tablec')->get();

根据表之间的关系进行修改。欲了解更多信息,请访问限制热切负载

最新更新