laravelのコメント:
$books = App\Book::with('author.contacts')->get();
私が必要なのはこのようなものです
$books = App\Book::with('author[contacts,publishers]')->get();
リレーションシップ内の複数のリレーションシップを積極的にロードします。
これは可能ですか?
できるよ
$books = App\Book::with('author.contacts','author.publishers')->get();
eager loading に関するLaravelのドキュメントでは、次のように配列内の関係をリストすることを推奨しています。
$books = App\Book::with(['author.contacts', 'author.publishers'])->get();
必要な数の関係を持つことができます。次のような関係に含める列を指定することもできます。
//only id, name and email will be returned for author
//id must always be included
$books = App\Book::with(['author: id, name, email', 'author.contacts', 'author.publishers'])->get();
次のように制約を追加することもできます。
$books = App\Book::with(['author: id, name, email' => function ($query) {
$query->where('title', 'like', '%first%');
}, 'email', 'author.contacts', 'author.publishers'])->get();