Skip to main content

Was sind Migrationen

Migrationen sind gewissermaßen Versionskontrolle für die Datenbank. Sie erlauben es einem Team, Definitionen des Datenbankschemas gemeinsam zu pflegen. Sie kennen bestimmt die Situation, in der Sie nach einem Pull der Sourcen Kollegen bitten müssen, eine Spalte manuell in ihrer Datenbank zu ergänzen. Migrationen lösen genau dieses Problem. Migrationsdateien liegen im Verzeichnis database/migrations. Der Dateiname enthält einen Zeitstempel, über den Laravel die Reihenfolge der Ausführung bestimmt.

Migration erzeugen

Erzeugen Sie eine neue Migrationsdatei mit make:migration.
Aus dem Migrationsnamen leitet Laravel den Tabellennamen ab und legt einen passenden Stub an. Bei create_posts_table wird bereits Code zum Anlegen der Tabelle posts erzeugt.

Aufbau einer Migration

Eine Migrationsklasse hat zwei Methoden: up und down.
  • up: Fügt Tabellen, Spalten oder Indexe hinzu.
  • down: Kehrt up um. Wird beim Rollback aufgerufen.

Wichtige Spaltenmethoden

Die Klasse Blueprint bietet zahlreiche Spaltentypen.

Spaltenmodifikatoren

Über Method-Chaining fügen Sie Modifikatoren hinzu.

Migrationen ausführen

Führen Sie alle ausstehenden Migrationen mit migrate aus.
Den Status prüfen Sie mit migrate:status.
In Produktion erscheint bei migrate eine Bestätigungsabfrage. Zur unbeaufsichtigten Ausführung nutzen Sie --force, achten Sie aber auf potenziellen Datenverlust.

Rollback

Setzen Sie die letzte Migrations-Batch mit migrate:rollback zurück.
Mit --step beschränken Sie den Rollback auf eine bestimmte Anzahl.
Um alles zurückzusetzen und erneut auszuführen, nutzen Sie migrate:refresh.
migrate:refresh legt alle Tabellen neu an – bestehende Daten gehen verloren. Praktisch zum Zurücksetzen der Entwicklungs-DB.

Beispiel: posts-Tabelle anlegen

Kompletter Ablauf am Beispiel einer Blog-Post-Tabelle.

1. Migration erzeugen

2. Migration bearbeiten

Öffnen Sie database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php und passen Sie den Inhalt an.

3. Migration ausführen

Die Tabelle posts wird angelegt.

4. Nachträglich Spalten hinzufügen

Um später weitere Spalten zu ergänzen, erstellen Sie eine neue Migration, statt bestehende zu ändern.
Bearbeiten Sie bestehende Migrationen möglichst nicht direkt. Es entstehen Inkonsistenzen zu Kollegen und Produktion. Änderungen werden immer als neue Migrationen hinzugefügt.

Migrations-Events

Bei jedem Migrationsschritt werden Events gefeuert. Alle erben von Illuminate\Database\Events\MigrationEvent. Beispiel: nach Abschluss der Migrationen den Cache leeren.

Nächste Schritte

Datenbank-Seeding

Legen Sie Beispieldaten in Ihren Tabellen an.

Einstieg in Eloquent

Arbeiten Sie mit Ihren Tabellen über das Eloquent ORM.
Zuletzt geändert am 13. Juli 2026