私のアプリケーションでは、関係を_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
_用です。
whereHas()
メソッドを使用します。
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('id', $ownerIds);
})->get();
試して
$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
$query->whereIn('id', $listOfOwners);
}])->get();