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.
Spaltenmodifikatoren
Über Method-Chaining fügen Sie Modifikatoren hinzu.Vektorspalten und -indizes
Die Methodevector erstellt eine vector-Spalte zum Speichern von Embedding-Vektoren. Setze dimensions auf die Ausgabedimension des von dir verwendeten Embedding-Anbieters.
pgvector-Erweiterung sowie auf MariaDB 11.7 oder neuer verfügbar. Aktiviere unter PostgreSQL pgvector, bevor du eine Vektorspalte anlegst.
vector-Spalte einen index hinzu. Dieser Index verwendet die Kosinus-Distanz.
dropVectorIndex.
Online-Indexerstellung
Wenn du einen Index auf einer großen Tabelle erstellst, wird die Tabelle in der Regel während des Aufbaus des Index gesperrt und Lese- und Schreibzugriffe müssen warten. In MySQL kannst du das Modifikatorinplace an eine Index- oder Fremdschlüssel-Definition anhängen, um die Operation mit dem INPLACE-Algorithmus auszuführen.
inplace mit dem Modifikator lock, um die Tabellensperre während der Operation zu steuern. Mit none bleiben Lese- und Schreibzugriffe für Operationen möglich, die MySQL zulässt.
INPLACE-Algorithmus und den angegebenen Lock-Modus unterstützt. Wenn du inplace für Fremdschlüssel-Operationen verwendest, deaktiviere zuvor die Fremdschlüssel-Constraints.
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.
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.