Skip to main content

Wat is Eloquent ORM?

Laravel bevat een object-relational mapper (ORM) genaamd Eloquent. Eloquent maakt de interactie met de database eenvoudig en implementeert het ActiveRecord-patroon. Met Eloquent maak je voor elke databasetabel een bijbehorende “model”-klasse. Via het model kun je records ophalen, invoegen, bijwerken en verwijderen.
Configureer voordat je Eloquent gebruikt je databaseverbinding in config/database.php. Standaard worden de DB_*-instellingen uit het .env-bestand gebruikt.

Modellen maken

Genereer een nieuw model met het Artisan-commando make:model.
Wil je tegelijk een migratie aanmaken, gebruik dan de optie -m.
Modellen worden aangemaakt in de map app/Models.

De relatie tussen modellen en tabellen

Eloquent leidt de tabelnaam automatisch af uit de klassennaam. De tabelnaam is de klassennaam omgezet naar de meervoudsvorm in snake_case. Als de tabelnaam niet aan de naamgevingsconventie voldoet, kun je die expliciet opgeven met de $table-property op het model.

Timestamps

Eloquent beheert standaard automatisch de kolommen created_at en updated_at. Als je in je migratie $table->timestamps() toevoegt, worden de waarden automatisch gezet bij het opslaan en bijwerken van het model. Om het automatisch beheren van timestamps uit te schakelen, zet je $timestamps op false.

Bescherming tegen mass assignment

Wanneer je met Eloquent data in bulk opslaat, moet je de bescherming tegen mass assignment configureren.

fillable

Met de $fillable-property geef je op welke kolommen toewijzing toestaan.

guarded

Omgekeerd gebruik je $guarded om kolommen op te geven waarvoor toewijzing verboden is.
Als je $guarded een lege array maakt, sta je toewijzing aan alle kolommen toe. Als je gebruikersinvoer rechtstreeks doorgeeft, bestaat het risico dat onbedoelde kolommen worden overschreven; we raden daarom aan de toegestane kolommen expliciet op te geven met $fillable.

De uitvoeringsflow van een Eloquent-query

Zo verloopt intern de uitvoering van een query als User::where()->get().

Basis-CRUD-bewerkingen

Records ophalen (Read)

Alle records ophalen:
Ophalen met voorwaarden:

Records aanmaken (Create)

Met de create-methode voeg je één record in (de $fillable-configuratie is vereist).
Je kunt ook een instantie maken en de waarden afzonderlijk toewijzen.

Records bijwerken (Update)

Haal het model op, wijzig de waarden en roep save aan om bij te werken.
Met de update-methode kun je meerdere kolommen tegelijk bijwerken.
Je kunt ook meerdere records die aan een voorwaarde voldoen in één keer bijwerken.

Een model herladen met een pessimistische lock

Om een model binnen een transactie opnieuw te laden en tegelijkertijd een pessimistische lock te verkrijgen, gebruik je de refreshForUpdate-methode. Het model wordt opnieuw geladen met een FOR UPDATE-lock.

Records verwijderen (Delete)

Verwijder een record met de delete-methode.
Je kunt ook rechtstreeks verwijderen op ID.

Basisquerymethoden

Praktijkvoorbeeld: databewerking met het Post-model

Een voorbeeld van een controller die de met een migratie aangemaakte posts-tabel bewerkt.
Als je Post $post schrijft als methode-argument van je controller, haalt Laravel het model automatisch op uit de routeparameter (route model binding). Je hoeft dan niet zelf Post::findOrFail($id) te schrijven.

De levenscyclus van model-events

Zo verloopt de stroom van events die worden afgevuurd wanneer je save() aanroept. Afhankelijk van of het om aanmaken of bijwerken gaat, worden verschillende events afgevuurd, maar saving en saved worden in beide gevallen afgevuurd.

Volgende stappen

Migraties

Bekijk opnieuw hoe je de tabellen die Eloquent gebruikt aanmaakt met migraties.
Laatst gewijzigd op 6 september 2026