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-commandomake:model.
-m.
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 kolommencreated_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.
De uitvoeringsflow van een Eloquent-query
Zo verloopt intern de uitvoering van een query alsUser::where()->get().
Basis-CRUD-bewerkingen
Records ophalen (Read)
Alle records ophalen:Records aanmaken (Create)
Met decreate-methode voeg je één record in (de $fillable-configuratie is vereist).
Records bijwerken (Update)
Haal het model op, wijzig de waarden en roepsave aan om bij te werken.
update-methode kun je meerdere kolommen tegelijk 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 derefreshForUpdate-methode. Het model wordt opnieuw geladen met een FOR UPDATE-lock.
Records verwijderen (Delete)
Verwijder een record met dedelete-methode.
Basisquerymethoden
Praktijkvoorbeeld: databewerking met het Post-model
Een voorbeeld van een controller die de met een migratie aangemaakteposts-tabel bewerkt.
De levenscyclus van model-events
Zo verloopt de stroom van events die worden afgevuurd wanneer jesave() 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.