Dans mon application, j'ai mis à jour une relation de one-to-many
À many-to-many
Et j'essaie de trouver un moyen de conserver les fonctionnalités associées.
Disons que j'ai deux tableaux liés, par exemple chiens et propriétaires. Si j'ai un éventail de propriétaires et que j'essaie d'obtenir une liste des identifiants des chiens pour ces propriétaires, comment dois-je le faire avec éloquence?
Une question similaire a été posée ici: https://laracasts.com/discuss/channels/laravel/getting-many-to-many-related-data-for-an-array-of-elements
Alors, comment puis-je obtenir les modèles Dog
où Owner
est dans un tableau?
La même chose que $associatedDogs = Dog::whereIn('owner_id',$ListOfOwners)->get();
est pour une relation One-To-Many
, Mais pour Many-to-Many
.
Utilisez la méthode whereHas()
:
$dogs = Dog::whereHas('owners', function($q) use($ownerIds) {
$q->whereIn('id', $ownerIds);
})->get();
Essayer
$associateDogs = Dog::with(['owners' => function($query) use ($listOfOwners) {
$query->whereIn('id', $listOfOwners);
}])->get();