所以我想急切地加载几个关系(如下所示),它可以正常工作。然而,我想在这个热切的负载上运行一个函数(如下所示)。通常情况下,我只在一个热切的负载关系中这样做,但我想在所有三个关系中都这样做。但是该查询仅适用于最后一个热切加载(即instagram_oauths
)。
是否有一种方法可以快速加载多个关系AND运行适用于所有3个关系的单独查询?以下内容没有出错。。。仅将return $oauth->withWeeklyStats($date);
应用于最后一个with
变量instagram_oauths
。
return $data = Team::currentTeam()->with(['facebook_oauths', 'twitter_oauths', 'instagram_oauths' => function($oauth) use ($date) {
return $oauth->withWeeklyStats($date);
}])->get();
这是不可能的,因为幼虫会进行单独的查询来填充关系,相反,您可以使用以下方法:
Team::currentTeam()->with(array_fill_keys(['facebook_oauths', 'twitter_oauths', 'instagram_oauths'], function($oauth) use($date) {
return $oauth->withWeeklyStats($date);
}))->get();
另一种替代方案是将JOINS
与Query Builder
一起使用。