Maison >développement back-end >tutoriel php >Comment créer des requêtes OR et AND complexes avec Eloquent de Laravel ?

Comment créer des requêtes OR et AND complexes avec Eloquent de Laravel ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 20:14:101061parcourir

How to Build Complex OR and AND Queries with Laravel's Eloquent?

Requêtes complexes dans Laravel : OU et ET avec Eloquent Query Builder

Lors de la création de requêtes complexes dans Laravel, il peut y avoir des cas où vous avez besoin combinant plusieurs conditions avec les opérateurs OR et AND. Comment cela peut-il être réalisé à l'aide du générateur de requêtes Eloquent ?

Requêtes OR..AND avec regroupement logique

Pour les requêtes impliquant des conditions OR suivies de conditions AND, Laravel 7. x/4.2 offre une solution pratique : le regroupement logique. Considérons la requête suivante :

WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)

Grâce au regroupement logique, cette requête peut être traduite comme suit :

Model::where(function ($query) {
    $query->where('a', '=', 1)
          ->orWhere('b', '=', 1);
})
->where(function ($query) {
    $query->where('c', '=', 1)
          ->orWhere('d', '=', 1);
});

Cette approche vous permet de définir plusieurs conditions OU imbriquées.

Requêtes complexes : SQL brut

Bien que la technique de regroupement logique soit idéale pour Des requêtes OR..AND plus simples, des scénarios plus complexes peuvent nécessiter l'utilisation de SQL brut. Voici un exemple :

Model::whereRaw(
    '(a = 1 OR b = 1) AND (c = 1 OR d = 1)'
);

En résumé :

La fonctionnalité de regroupement logique d'Eloquent fournit une solution élégante pour les requêtes OR..AND. Toutefois, pour des scénarios plus complexes, le SQL brut peut offrir une flexibilité et un contrôle accrus. Considérez l'approche appropriée en fonction de la complexité de votre requête.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn