Skip to main content

Was ist das Eloquent-ORM?

Laravel bringt mit Eloquent ein Object-Relational-Mapper (ORM) mit. Eloquent erleichtert die Interaktion mit der Datenbank und setzt das Active-Record-Muster um. Sie legen für jede Tabelle eine passende „Model”-Klasse an und arbeiten über das Modell mit den Datensätzen – zum Lesen, Einfügen, Aktualisieren oder Löschen.
Konfigurieren Sie vor der Nutzung von Eloquent Ihre Datenbankverbindung in config/database.php. Standardmäßig werden die DB_*-Werte aus der .env-Datei verwendet.

Modell erstellen

Ein neues Modell erzeugen Sie mit dem Artisan-Befehl make:model.
Um gleichzeitig eine Migration zu erstellen, verwenden Sie die Option -m.
Modelle werden im Verzeichnis app/Models abgelegt.

Zuordnung von Modell und Tabelle

Eloquent leitet den Tabellennamen automatisch aus dem Klassennamen ab. Der Tabellenname ist der Klassenname in Snake-Case und im Plural. Passt der Tabellenname nicht zur Namenskonvention, geben Sie ihn über die Property $table explizit an.

Zeitstempel

Standardmäßig verwaltet Eloquent die Spalten created_at und updated_at automatisch. Wenn Sie in der Migration $table->timestamps() einfügen, werden die Werte beim Speichern oder Aktualisieren automatisch gesetzt. Um die automatische Zeitstempelverwaltung zu deaktivieren, setzen Sie $timestamps auf false.

Schutz vor Mass Assignment

Beim gleichzeitigen Zuweisen mehrerer Werte über Eloquent muss der Schutz vor Mass Assignment konfiguriert sein.

fillable

Erlauben Sie die Zuweisung bestimmter Spalten über die Property $fillable.

guarded

Umgekehrt geben Sie mit $guarded an, welche Spalten geschützt sind.
Ein leeres Array bei $guarded erlaubt die Zuweisung an alle Spalten. Übergeben Sie Nutzereingaben direkt, besteht die Gefahr, dass ungewollt Spalten überschrieben werden. Es empfiehlt sich daher, gezielt mit $fillable freizugeben.

Ausführungsablauf einer Eloquent-Query

Nachfolgend sehen Sie, wie eine Abfrage wie User::where()->get() intern abläuft.

Grundlegende CRUD-Operationen

Datensätze lesen (Read)

Alle Datensätze abrufen:
Mit Bedingungen abfragen:

Datensätze anlegen (Create)

Mit create fügen Sie einen Datensatz ein (die Property $fillable muss konfiguriert sein).
Alternativ instanziieren Sie das Modell und weisen die Werte einzeln zu.

Datensätze aktualisieren (Update)

Laden Sie das Modell, ändern Sie den Wert und rufen Sie save auf.
Mit update aktualisieren Sie mehrere Spalten gleichzeitig.
Mehrere Datensätze lassen sich per Bedingung gemeinsam aktualisieren.

Datensätze löschen (Delete)

Rufen Sie delete auf einem Modell auf.
Alternativ können Sie direkt per ID löschen.

Grundlegende Query-Methoden

Praxisbeispiel: Datenverwaltung mit einem Post-Modell

Beispiel für einen Controller, der die per Migration erzeugte Tabelle posts verwaltet.
Wenn Sie eine Controller-Methode mit dem Parameter Post $post versehen, lädt Laravel das Modell automatisch anhand des Route-Parameters (Route Model Binding). Sie müssen Post::findOrFail($id) also nicht selbst schreiben.

Lebenszyklus der Modell-Events

Der folgende Ablauf zeigt, welche Events beim Aufruf von save() ausgelöst werden. Ob es sich um ein Neu-Anlegen oder ein Aktualisieren handelt, entscheidet, welche Events zwischen saving und saved gefeuert werden – letztere werden in beiden Fällen ausgelöst.

Nächste Schritte

Migrationen

Frischen Sie auf, wie Sie mit Migrationen Tabellen für Eloquent anlegen.
Zuletzt geändert am 13. Juli 2026