Was ist der Query Builder
Der Query Builder von Laravel stellt eine flüssige Schnittstelle zum Aufbauen und Ausführen von Datenbankabfragen bereit. Sie starten mit der Methodetable() der Fassade DB und kombinieren die Abfrage per Method-Chaining.
Der Query Builder funktioniert auf allen von Laravel unterstützten Datenbanken (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server). Der Code bleibt beim Wechsel der Datenbank unverändert.
Wann Query Builder, wann Eloquent
Daten abfragen
Alle Datensätze holen
get() liefert eine Illuminate\Support\Collection zurück. Jeder Datensatz ist ein PHP-stdClass-Objekt.
Einen Datensatz holen
Werte einer Spalte als Liste
Große Datenmengen in Blöcken verarbeiten
Streaming (LazyCollection)
Aggregate
Existenz prüfen
SELECT
WHERE
Grundlegende Bedingungen
Bedingungen gruppieren
whereIn / whereBetween / whereNull
whereLike (Musterabgleich)
whereAny / whereAll (gleiche Bedingung auf mehreren Spalten)
whereNullSafeEquals (NULL-sicherer Gleichheitsvergleich)
whereNullSafeEquals und orWhereNullSafeEquals behandeln zwei NULL-Werte als gleich.
Beim gewöhnlichen =-Operator ist NULL = NULL false, whereNullSafeEquals betrachtet NULL und NULL als gleich. Es entspricht dem Operator <=> in MySQL und IS NOT DISTINCT FROM in PostgreSQL.
Ein normales
where('column', null) wird zu WHERE column IS NULL; whereNullSafeEquals('column', $value) verhält sich hingegen konsistent, egal ob der gebundene Wert null ist oder nicht. Besonders praktisch, wenn Nutzereingaben null sein können.JOIN
Subquery-JOIN
Sortieren, gruppieren, limitieren
Subqueries
Raw-Ausdrücke
INSERT / UPDATE / DELETE
INSERT
UPSERT (INSERT OR UPDATE)
UPDATE
DELETE
Bedingte Abfragen (when)
Für dynamische Bedingungen ist when() übersichtlicher.
Debugging
Zusammenfassung
Häufig verwendete Methoden
Häufig verwendete Methoden
Query Builder vs. Eloquent
Query Builder vs. Eloquent
Der Query Builder ist eine niedrigere Ebene als Eloquent und gibt statt Model-Instanzen
stdClass-Objekte zurück.
Wenn Sie Beziehungen oder Modell-Events (Observer) nicht benötigen, ist der Query Builder einfacher und schneller.