##withでeagerloadする
紐づいたテーブルから大量にデータ取得する場合、何度もDBアクセスしてデータを取得するとレスポンスがわるくなるので、リレーションを取得するときはwithを使う。
###使い方
下記のようにするとwithメソッドが利用可能
Model::with('リレーション名')->get();
###実際の例
1対多の関係(Personが複数のBoardを持っている)
親:person
・[id, name, email, age]
子:Board
・[id, person_id, title, message]
withを使うと下記のような流れで値を取得できる。
※hasMany, belongsTo等、正しく設定されていること前提
①Boardだけを取得
②取得したBoardのperson_idの値をまとめ、それらのIDのPersonを取得
Board.php
$boards = Board::with('person')->get();
return view('boards.index', ['boards' => $boards])
Boards/index.blade.php
# こうすると親の値も取得できる
@foreach($boards as $board)
<p>{{ $board->message }}</p>
<p>{{ $board->person->name }}</p>
@endforeach
上記は子から親を取得しているが、これの逆パターンをすれば親から子の取得も可能