预加载嵌套关联,可以使用「点」语法。例如,在一个 Eloquent 语句中,预加载所有书籍作者和这些作者的联系信息:
$books = App\Book::with('author.contacts')->get();
那么如何为分别为author 和 contacts 指定查询字段呢?
方法一:
App\Book::with(['author' => function ($query) {
$query->select(['选定的字段']);
$query->with(['contacts' => function ($query) {
$query->select(['选定的字段']);
}]);
}])->get()
方法二:
App\Book::with(['author:id,name', 'author.contacts:email,user_id'])->get();
方法三:
App\Book::with(['author' => function ($query) {
$query->select(['选定的字段']);
},'author.contacts' => function ($query) {
$query->select(['选定的字段']);
}])->get();
引申阅读:Laravel 6嵌套预加载时添加约束(设置查询条件)的方法