Abfragen mit mehreren OR- und AND-Bedingungen in Laravel Eloquent
In Laravel Eloquent kann die Erstellung komplexer Abfragen mit mehreren OR- und AND-Bedingungen manchmal erforderlich sein sorgfältige Überlegung.
Abfrage mit ODER und UND
Um die folgende SQL-Anweisung mit Eloquent darzustellen:
WHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)
Verwenden Sie die logische Gruppierung, wie in Laravel 7.x/4.2 eingeführt:
Model::where(function ($query) { $query->where('a', '=', 1) ->orWhere('b', '=', 1); }) ->where(function ($query) { $query->where('c', '=', 1) ->orWhere('d', '=', 1); });
In diesem Beispiel verbindet die Abfrage zwei separate logische Gruppen, wobei jede Gruppe eine ODER-Bedingung auf ihren jeweiligen Spaltensatz anwendet. Diese logischen Gruppen werden dann mithilfe einer UND-Bedingung verknüpft.
Verwendung von Roh-SQL für komplexe Abfragen
Für noch komplexere Abfragen kann die Verwendung von Roh-SQL erforderlich sein. Dies kann mit der Methode DB::raw() erfolgen. Um beispielsweise dieselbe Abfrage wie oben mit unformatiertem SQL auszuführen:
$query = "SELECT * FROM table_name WHERE (a = 1 OR b = 1) AND (c = 1 OR d = 1)"; $results = DB::select(DB::raw($query));
Bedenken Sie, dass die Verwendung von unformatiertem SQL die Schutzmaßnahmen des Abfrage-Builders von Eloquent umgehen kann und mit Vorsicht verwendet werden sollte, da dies zu potenziellen Sicherheitslücken führen kann .
Das obige ist der detaillierte Inhalt vonWie konstruiere ich komplexe Abfragen mit mehreren OR- und AND-Bedingungen in Laravel Eloquent?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!