Heim >Backend-Entwicklung >PHP-Tutorial >Wie erstellt man komplexe ODER- und UND-Abfragen mit Eloquent von Laravel?

Wie erstellt man komplexe ODER- und UND-Abfragen mit Eloquent von Laravel?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-27 20:14:101013Durchsuche

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

Komplexe Abfragen in Laravel: ODER und UND mit Eloquent Query Builder

Bei der Erstellung komplexer Abfragen in Laravel kann es Situationen geben, in denen Sie dies benötigen Kombinieren mehrerer Bedingungen mit OR- und AND-Operatoren. Wie kann dies mit dem Eloquent Query Builder erreicht werden?

OR..AND-Abfragen mit logischer Gruppierung

Für Abfragen mit ODER-Bedingungen, gefolgt von UND-Bedingungen, Laravel 7. x/4.2 bietet eine praktische Lösung: logische Gruppierung. Betrachten Sie die folgende Abfrage:

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

Mithilfe der logischen Gruppierung kann diese Abfrage wie folgt übersetzt werden:

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

Mit diesem Ansatz können Sie mehrere verschachtelte ODER-Bedingungen definieren.

Komplexe Abfragen: Raw SQL

Während die logische Gruppierungstechnik ideal ist für Bei einfacheren OR..AND-Abfragen kann bei komplexeren Szenarien die Verwendung von Roh-SQL erforderlich sein. Hier ist ein Beispiel:

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

Zusammenfassung:

Die logische Gruppierungsfunktion von Eloquent bietet eine elegante Lösung für OR..AND-Abfragen. Für komplexere Szenarien bietet Roh-SQL jedoch möglicherweise mehr Flexibilität und Kontrolle. Erwägen Sie den geeigneten Ansatz basierend auf der Komplexität Ihrer Anfrage.

Das obige ist der detaillierte Inhalt vonWie erstellt man komplexe ODER- und UND-Abfragen mit Eloquent von Laravel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn