Laravel whereDoesntHave() - multiples OU des conditions de
Dans Laravel 4.2 j'ai un modèle appelé Produit avec plusieurs-à-plusieurs relationshis à d'autres modèles comme le Pays ou la Catégorie. Je veux filtrer les produits qui sont "incomplètes", ce qui signifie qu'ils n'ont aucune connecté pays ou pas connecté catégories. Je peux utiliser whereDoesntHave()
méthode pour filtrer un rapport. Lorsque je l'utilise deux fois dans une même requête, il crée AND
condition, mais j'ai besoin de OR
. Je ne peux pas trouver orWhereDoesntHave()
méthode dans la documentation de l'API. Je ne peux pas passer plusieurs relations en tant qu'arguments, car il s'attend à ce premier argument une chaîne de caractères.
J'ai besoin de quelque chose comme ceci:
$products = Product::whereDoesntHave('categories')->orWhereDoesntHave('countries')->get();
Est-il possible d'arriver à whereDoesntHave()
avec plusieurs OR
conditions?
OriginalL'auteur KazikM | 2015-01-21
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
doesntHave
et spécifier l'opérateur booléen:En fait, vous avez seulement besoin de
whereDoesntHave
si vous souhaitez passer par une fermeture à filtrer les modèles connexes avant de vérifier si l'un d'entre eux existent. Dans le cas où vous voulez faire cela, vous pouvez passer à la fermeture en tant que troisième argument:doesntHave()
lors de la lecture de l'API. Votre premier exemple de code est juste ce dont j'ai besoin.OriginalL'auteur lukasgeiter
Utilisation
Laravel Code Source:
whereDoesntHave https://github.com/illuminate/database/blob/master/Eloquent/Builder.php#L654
appels
https://github.com/illuminate/database/blob/master/Eloquent/Builder.php#L628
à l'interne.
doesntHave()
méthode et son second paramètre.OriginalL'auteur Jan P.
Depuis Laravel 5.5 il y a un orWhereDoesntHave fonction.
Vous pouvez l'utiliser comme ceci
De vous exemple, il semble que vous n'êtes pas à l'aide d'une clause where, de sorte que vous pouvez simplement utiliser
OriginalL'auteur Adam