Laravel 6版本可以使用嵌套预加载的方法预加载嵌套关联,比如在一个 Eloquent 语句中预加载一个专业对应的学生和家庭信息:


$major = AppBook::with('students.family')->where('major_name','计算机科学与技术')->get();

那么如果我们要获取的是这个专业对应的所有在校生呢?

Laravel 6可以为预加载添加约束条件,如果按照官方网文档的写法如下:


$major = AppBook::with(['students' => function ($query) {
    $query->where('status', 1);
}])->where('major_name','计算机科学与技术')->get();

如果我们要获取的是这个专业对应的所有在校生及家庭信息呢?也就是Laravel 6嵌套预加载时添加约束(设置查询条件)的方法如下:


$major = AppBook::with(['students' => function ($query) {
    $query->where('status', 1);
},'students.family'])->where('major_name','计算机科学与技术')->get();

 

相关知识:laravel嵌套预加载为每个关联指定查询字段