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 Verzeichnisdatabase/migrations.
Der Dateiname enthält einen Zeitstempel, über den Laravel die Reihenfolge der Ausführung bestimmt.
Migration erzeugen
Erzeugen Sie eine neue Migrationsdatei mitmake:migration.
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: Kehrtupum. Wird beim Rollback aufgerufen.
Wichtige Spaltenmethoden
Die KlasseBlueprint bietet zahlreiche Spaltentypen.
| Methode | Beschreibung |
|---|---|
$table->id() | Auto-Increment-Primärschlüssel (Alias von bigIncrements('id')) |
$table->string('name') | VARCHAR (Default 255 Zeichen) |
$table->text('body') | TEXT |
$table->integer('count') | INTEGER |
$table->boolean('active') | TINYINT als Boolean |
$table->timestamp('published_at') | TIMESTAMP |
$table->timestamps() | created_at und updated_at gemeinsam |
$table->softDeletes() | Spalte deleted_at für Soft Deletes |
$table->foreignId('user_id') | BIGINT UNSIGNED für Fremdschlüssel |
Spaltenmodifikatoren
Über Method-Chaining fügen Sie Modifikatoren hinzu.Migrationen ausführen
Führen Sie alle ausstehenden Migrationen mitmigrate aus.
migrate:status.
Rollback
Setzen Sie die letzte Migrations-Batch mitmigrate:rollback zurück.
--step beschränken Sie den Rollback auf eine bestimmte Anzahl.
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 Siedatabase/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php und passen Sie den Inhalt an.
3. Migration ausführen
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.Migrations-Events
Bei jedem Migrationsschritt werden Events gefeuert. Alle erben vonIlluminate\Database\Events\MigrationEvent.
| Klasse | Beschreibung |
|---|---|
Illuminate\Database\Events\DatabaseRefreshed | Nach migrate:refresh |
Illuminate\Database\Events\MigrationsStarted | Vor einer Migrations-Batch |
Illuminate\Database\Events\MigrationsEnded | Nach einer Migrations-Batch |
Illuminate\Database\Events\MigrationStarted | Vor einer einzelnen Migration |
Illuminate\Database\Events\MigrationEnded | Nach einer einzelnen Migration |
Illuminate\Database\Events\NoPendingMigrations | Wenn keine offene Migration vorliegt |
Illuminate\Database\Events\SchemaDumped | Nach dem Schema-Dump |
Illuminate\Database\Events\SchemaLoaded | Nach Laden eines Schema-Dumps |
Nächste Schritte
Datenbank-Seeding
Legen Sie Beispieldaten in Ihren Tabellen an.
Einstieg in Eloquent
Arbeiten Sie mit Ihren Tabellen über das Eloquent ORM.