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-Befehlmake:model.
-m.
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.| Modellname | Tabellenname |
|---|---|
Post | posts |
User | users |
AirTrafficController | air_traffic_controllers |
$table explizit an.
Zeitstempel
Standardmäßig verwaltet Eloquent die Spaltencreated_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.
Ausführungsablauf einer Eloquent-Query
Nachfolgend sehen Sie, wie eine Abfrage wieUser::where()->get() intern abläuft.
Grundlegende CRUD-Operationen
Datensätze lesen (Read)
Alle Datensätze abrufen:Datensätze anlegen (Create)
Mitcreate fügen Sie einen Datensatz ein (die Property $fillable muss konfiguriert sein).
Datensätze aktualisieren (Update)
Laden Sie das Modell, ändern Sie den Wert und rufen Siesave auf.
update aktualisieren Sie mehrere Spalten gleichzeitig.
Datensätze löschen (Delete)
Rufen Siedelete auf einem Modell auf.
Grundlegende Query-Methoden
| Methode | Beschreibung |
|---|---|
Post::all() | Alle Datensätze abrufen |
Post::find($id) | Datensatz per ID abrufen (bei Nichtfinden null) |
Post::findOrFail($id) | Datensatz per ID abrufen (bei Nichtfinden 404) |
Post::where('column', 'value')->get() | Datensätze mit passender Bedingung abrufen |
Post::where('column', 'value')->first() | Ersten passenden Datensatz abrufen |
Post::where('column', 'value')->count() | Anzahl passender Datensätze |
Post::orderBy('created_at', 'desc')->get() | Sortierung angeben |
Post::latest()->get() | Nach created_at absteigend sortiert abrufen |
Post::limit(10)->get() | Begrenzte Anzahl abrufen |
Praxisbeispiel: Datenverwaltung mit einem Post-Modell
Beispiel für einen Controller, der die per Migration erzeugte Tabelleposts verwaltet.
Lebenszyklus der Modell-Events
Der folgende Ablauf zeigt, welche Events beim Aufruf vonsave() 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.