Chaîner ou grouper plusieurs clauses WHERE dans Laravel Eloquent
Travailler avec plusieurs clauses WHERE dans les requêtes Laravel Eloquent peut sembler fastidieux et non raffiné lors de l'utilisation du syntaxe de chaînage standard. Cependant, il existe plusieurs approches alternatives disponibles pour améliorer l'élégance et la lisibilité de votre code.
Utilisation d'une clause WHERE basée sur un tableau
Introduit dans Laravel 5.3, array- Les clauses WHERE basées vous permettent de regrouper plusieurs conditions en un seul appel. Cela peut réduire considérablement le nombre de lignes de code requises, comme le montre l'exemple suivant :
$query->where([ ['column_1', '=', 'value_1'], ['column_2', '!=', 'value_2'], ['column_3', '=', 'value_3'], ... ]);
Regroupement des clauses WHERE pour les opérations AND
Si tous vos Les clauses WHERE utilisent l'opérateur AND, vous pouvez les regrouper dans un tableau et le transmettre à la méthode Where. Ceci est similaire à l'approche basée sur un tableau mais spécifie explicitement la condition AND.
$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...]; $results = User::where($matchThese)->get();
Combinaison de groupes avec l'opérateur OR
Pour créer une requête plus complexe avec les deux Opérateurs AND et OR, vous pouvez utiliser des tableaux imbriqués. L'exemple suivant combine les deux techniques précédentes :
$matchThese = ['field' => 'value', 'another_field' => 'another_value', ...]; $orThose = ['yet_another_field' => 'yet_another_value', ...]; $results = User::where($matchThese) ->orWhere($orThose) ->get();
Cette requête générerait le SQL suivant :
SELECT * FROM users WHERE (field = value AND another_field = another_value AND ...) OR (yet_another_field = yet_another_value AND ...)
En utilisant ces approches alternatives, vous pouvez améliorer la clarté et la concision de votre Requêtes éloquentes, réduisant le besoin d'une syntaxe de chaînage verbeuse et répétitive.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!