Wat is de querybuilder
De querybuilder van Laravel is een mechanisme om databasequery’s op te bouwen en uit te voeren via een fluente interface. Je begint met detable()-methode van de DB-facade en bouwt de query op met method chaining.
De querybuilder werkt op alle databases die Laravel ondersteunt (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server). Ook als je van database wisselt, kun je dezelfde code blijven gebruiken.
Wanneer querybuilder en wanneer Eloquent
Data ophalen
Alle records ophalen
get() geeft een Illuminate\Support\Collection terug. Elk record is een PHP-stdClass-object.
Eén record ophalen
Waarden van een kolom als lijst ophalen
Grote hoeveelheden data in delen verwerken
Streamen (LazyCollection)
Aggregaties
Bestaan van records controleren
De SELECT-clausule
De WHERE-clausule
Basisvoorwaarden
Voorwaarden groeperen
whereIn / whereBetween / whereNull
whereLike (patroonvergelijking)
whereAny / whereAll (dezelfde voorwaarde op meerdere kolommen)
whereNullSafeEquals (NULL-veilige gelijkheidsvergelijking)
whereNullSafeEquals en orWhereNullSafeEquals vergelijken een kolomwaarde met een opgegeven waarde, waarbij twee NULL-waarden als gelijk worden beschouwd.
Bij de gewone =-operator is NULL = NULL false, maar bij whereNullSafeEquals worden twee NULL-waarden als gelijk beoordeeld. Het komt overeen met de <=>-operator van MySQL en IS NOT DISTINCT FROM van PostgreSQL.
Een gewone
where('column', null) wordt vertaald naar WHERE column IS NULL, maar whereNullSafeEquals('column', $value) werkt consistent, of de gebonden waarde nu null is of niet. Bijzonder handig wanneer invoer van gebruikers null kan zijn.JOIN
Subquery-JOIN
Sorteren, groeperen en limiteren
Subquery’s
Raw-expressies
INSERT / UPDATE / DELETE
INSERT
UPSERT (INSERT OR UPDATE)
UPDATE
DELETE
Voorwaardelijke query’s (when)
Wil je queryvoorwaarden dynamisch toepassen, dan schrijf je vertakkingen overzichtelijk metwhen().
Debuggen
Samenvatting
Overzicht van veelgebruikte methodes
Overzicht van veelgebruikte methodes
Querybuilder vs Eloquent
Querybuilder vs Eloquent
De querybuilder werkt op een lager niveau dan Eloquent en geeft geen modelinstanties maar
stdClass terug.
Heb je geen relaties of modelevents (observers) nodig, dan is de querybuilder eenvoudiger en sneller.