は同じ動作Laravelで直接関係にアクセスしてwithとの違いは何ですか?
$user1 = User::find(1);
$user2 = User::with('roles')->find(1);
どちら上記の方法以下のようにIは、ユーザの詳細情報を取得することができ、モデル
class User {
public function roles()
{
return $this->hasMany('Roles');
}
}
以下の検討します。 with('roles')
を使用しなくても、その特定のユーザーのroles
にアクセスできます。
echo $user1->roles; // Outputs all the roles of that user
私の質問は、with('relation')
を使用した実際の違い/利点は何ですか?
'User :: with( 'roles') - > find(1);' 'with'を使用しているときは' EAGER LOADING'と呼ばれます。 '$ user1-> roles;を使っているときは' LAZY LOADING'と呼ばれます。詳細はhttps://laravel.com/docs/5.4/eloquent-relationships#constraining-eager-loadsおよびhttps://laravel.com/docs/5.4/eloquent-relationships#lazy-eager-loadingを参照してください。 –