Laravel Eloquent嵌套关联如何同时加载A.B下的C和D两个关联
你用的是Eloquent ORM的预加载功能,要实现同时加载B下的C和D两个关联,有两种常用写法:
写法1:直接传入多个关联路径(更简洁)
直接把两个要加载的完整嵌套路径都传到with方法的数组参数里即可,ORM会自动合并上层关联的查询,不会重复发起请求:
Tickets->with(['A.B.C', 'A.B.D'])->get();
写法2:嵌套闭包指定关联
如果后续还要对B层级的查询做额外条件限制,可以用闭包写法指定B下面要加载的多个关联:
Tickets->with(['A.B' => function ($query) { // 此处可以额外加B层级的查询条件,比如 $query->where('status', 1); $query->with(['C', 'D']); }])->get();
两种写法最终返回的结构都是你需要的{A: {AB_Relationship: {BC_Relationship:{}, BD_Relationship:{}}}}格式。
内容的提问来源于stack exchange,提问作者Yeo Bryan
相关产品推荐
相关产品推荐

