Skip to main content

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 de table()-methode van de DB-facade en bouwt de query op met method chaining.
Intern wordt PDO-parameterbinding gebruikt, waardoor bescherming tegen SQL-injectie automatisch geregeld is.
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

Als je tijdens het chunken records bijwerkt of verwijdert, gebruik dan chunkById() in plaats van chunk(). Bij chunk() kunnen records verschuiven.

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

Raw-expressies worden als SQL-string rechtstreeks in de query ingevoegd. Geef je gebruikersinvoer rechtstreeks door, dan loop je risico op SQL-injectie. Schrijf ze altijd veilig met bindings.

INSERT / UPDATE / DELETE

INSERT

UPSERT (INSERT OR UPDATE)

UPDATE

DELETE

Voorwaardelijke query’s (when)

Wil je queryvoorwaarden dynamisch toepassen, dan schrijf je vertakkingen overzichtelijk met when().

Debuggen

dd() is handig bij het debuggen, maar gebruik het nooit in productie. Het is veiliger om de SQL en bindings te bekijken met toSql() en getBindings().

Samenvatting

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.
Laatst gewijzigd op 6 september 2026