2017-03-02 8 views
1

我々は次のようにConstraining Eager Loadsを使用することができます。eager loadingとnested eager loadingを同時に制限する方法や方法がありますか?

$users = App\User::with(['author' => function ($query) { 
    $query->where('isActive', '1'); 
}])->get(); 

そして、我々は次のようにNested Eager Loadingを使用することができます。

$books = App\Book::with('author.books')->get(); 

しかし、同時にそれらの両方を使用する方法があります。上記の例では、アクティブな作者と同時に作者の熱心なローディングブックを持っている熱心な負荷を意味していますか?これには方法や方法がありますか?

答えて

2

ここで何かを試してみてください。決してテストされません。多分それはうまくいくかもしれません。あなたが実際にこの

$users = App\User::with(['author' => function ($query) { 
    $query->with(['books' => function ($subquery) { 
     $subquery->where('isActive', 1); 
    }])->where('isActive', '1'); 
}])->get(); 
+0

あなたの例のような積極的なロードをネストした場合、どのよう

は条件によらず、すべてのユーザーを返します。実際にあなたの例に従って何かを試みます。 – Skeletor

+0

はい、すべてのユーザーを返すことになっています。書籍を持っているユーザーだけに 'whereHas()'や 'has()'を使用したい場合。 – EddyTheDove

+0

はい、実際にあなたは正しいです。なぜisActive、1を2回使用していますか? – Skeletor

関連する問題