Naar hoofdinhoud gaan

Aan de slag

Laravel ondersteunt officieel de volgende databases:
  • MySQL / MariaDB
  • PostgreSQL
  • SQLite
  • SQL Server
Je kunt dezelfde verbindingsconfiguratie gebruiken met rauwe SQL, de Query Builder of Eloquent ORM.
Deze pagina behandelt de basis van databaseverbindingen. Zie Query Builder voor praktische queries, Migrations voor schemabeheer en Seeding voor het inladen van initiële data.

Configuratie

De databaseconfiguratie is gecentraliseerd in config/database.php. Met default kies je de standaardverbindingsnaam en met connections definieer je de details per verbinding.
Stel in .env minimaal het volgende in:
Gebruik je SQLite, stel dan DB_CONNECTION=sqlite en het pad in DB_DATABASE in.

Lees- en schrijfverbindingen scheiden

Wil je lezen (SELECT) en schrijven (INSERT / UPDATE / DELETE) naar aparte hosts scheiden, configureer dan read en write binnen dezelfde verbinding.
Als je sticky op true zet, worden leesbewerkingen na een schrijfbewerking binnen hetzelfde request vastgezet op de write-verbinding.
In opstellingen met replica-vertraging verlaag je met sticky het risico om vlak na een schrijfbewerking verouderde data te lezen.

Verouderde leesbewerkingen ook in volgende requests voorkomen

sticky werkt alleen binnen hetzelfde request. Wil je ook in volgende requests binnen dezelfde sessie de zojuist geschreven data lezen, voeg dan de middleware PreventStaleDatabaseReads toe aan de middlewaregroep web.
De middleware legt schrijfbewerkingen op de standaard databaseverbinding vast in de sessie. Standaard gebruiken requests binnen 2 seconden na een schrijfbewerking de write-verbinding voor leesbewerkingen op die verbinding. Gebruik for om de duur te wijzigen.
Omdat deze middleware afhankelijk is van de sessie, moet hij na de middleware StartSession worden uitgevoerd. Leesbewerkingen van andere sessies of andere databaseverbindingen worden niet beïnvloed.

Tijdelijk lezen via de write-verbinding

Gebruik de methode usingWritePdo van de verbinding om leesbewerkingen binnen een callback vast te zetten op de write-verbinding.
Dit geldt ook voor Eloquent- en relationship-queries die binnen de callback dezelfde verbinding gebruiken. Zodra de callback klaar is, wordt de leesinstelling van de verbinding hersteld, ongeacht of er een exception is opgetreden.

Pooled PostgreSQL-verbindingen

Gebruik je een managed PostgreSQL-service die connection pooling in transactiemodus biedt, zoals PgBouncer, stel dan de opties pooled en direct in.
Als je pooled inschakelt, verdeelt Laravel automatisch: Wil je in applicatiecode expliciet de directe verbinding gebruiken, voeg dan de suffix ::direct toe aan de verbindingsnaam.

Meerdere databaseverbindingen

Je kunt in config/database.php meerdere verbindingen definiëren en wisselen met DB::connection().

SQL-queries uitvoeren

De DB-facade heeft speciale methoden per type query.
Plak nooit gebruikersinvoer rechtstreeks in een SQL-string. Gebruik altijd bindingargumenten om SQL-injectie te voorkomen.

Query-listening

Wil je uitgevoerde SQL volgen, registreer dan DB::listen() in de boot() van een serviceprovider.

Transacties

Wil je meerdere updates als één geheel behandelen, gebruik dan DB::transaction(). Bij een exception voert Laravel automatisch een rollback uit.
Heb je herhaalpogingen bij deadlocks nodig, dan kun je attempts opgeven.
Wil je handmatig controle houden, gebruik dan beginTransaction / rollBack / commit.

Volgende stappen

Query Builder

Leer hoe je met de verbindingsconfiguratie veilig queries opbouwt.

Migrations

Leer hoe je het schema van je gekoppelde database onder versiebeheer houdt.

Seeding

Leer hoe je ontwikkel- en testdata op een reproduceerbare manier inlaadt.
Laatst gewijzigd op 20 oktober 2026