laravel 嵌套渴求式加载指定字段
预加载嵌套关联,可以使用「点」语法。例如,在一个 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 用匿名函数执行sql语句太过繁琐,不够优雅。
使用方法二后用debug看了一下,也只执行两次sql 完美!


浙公网安备 33010602011771号