急切加载非直接关系laravel

时间:2021-04-10 18:05:55

标签: laravel eager-loading

假设我们有用户属于许多课程。课程属于一类。用户将被分配到一个类别中的少数课程,因此他将间接拥有一个类别。 所以我们可以像这样编码 $user ->find(1)->with('courses') $user->category= $user->courses->first()->category

让用户拥有课程和类别

急切加载是否有可能有类似的东西 $user->find(1)->with('category', 'courses')

也可以用'with'子句替换发送到闭包的查询。

1 个答案:

答案 0 :(得分:1)

find 将返回单个模型,因此在这种情况下,预先加载和延迟加载对于直接关系是等效的。对于嵌套关系,您仍然可以从预加载中受益,因为只需执行一个查询来加载每个已加载课程的类别。

您可以获得如下嵌套关系:

$user = User::with([ 'courses', 'courses.category' ])->find(1);
// These will be pre-loaded
// $user->courses
// $user->courses[0]->category