web-dev-qa-db-ja.com

Laravel Eloquent多対多クエリwhereIn

私のアプリケーションでは、関係を_one-to-many_から_many-to-many_に更新し、関連する機能を永続化する方法を見つけようとしています。

たとえば、2つの関連するテーブルがあるとします。犬と飼い主。所有者の配列があり、それらの所有者の犬IDのリストを取得しようとしている場合、雄弁にどのようにすればよいですか?

同様の質問がここで尋ねられました: https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-data-for-an-array-of-elements

それで、Dogが配列内にあるOwnerモデルを取得するにはどうすればよいですか?

$associatedDogs = Dog::whereIn('owner_id',$ListOfOwners)->get();と同じことは_One-To-Many_関係用ですが、_Many-to-Many_用です。

9
Angelin Calu

whereHas() メソッドを使用します。

$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
    $q->whereIn('id', $ownerIds);
})->get();
27
Alexey Mezenin

試して

$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
    $query->whereIn('id', $listOfOwners);
}])->get();
1
EddyTheDove