Heim > Artikel > PHP-Framework > Einfache Analyse der Datenbank und Datenbankmigration im Laravel-Framework
Die Entwicklungsmethode des Laravel-Frameworks ist agil und iterativ, und Sie erwarten nicht, dass Sie beim ersten Mal den gesamten richtigen Code erhalten. Stattdessen schreiben wir Code, testen und interagieren mit unseren Endbenutzern und verfeinern unser Verständnis.
Für die Arbeit brauchen wir eine Reihe unterstützender Praktiken. Wir verwenden Versionskontrolltools wie Subversion, GIT oder Mercurial, um die Quellcodedateien der Anwendung zu speichern, sodass wir Fehler rückgängig machen und Änderungen während der Entwicklung verfolgen können.
Aber wenn sich Anwendungen ändern, gibt es Bereiche, die wir mit der Versionskontrolle allein nicht effektiv verwalten können. Im Laufe unserer Entwicklung entwickelte sich das Datenbankschema der Laravel-Anwendung weiter: Wir fügten hier eine Tabelle hinzu, benannten dort Spalten um, ließen Indizes fallen und so weiter. Datenbankänderungen werden im Gleichschritt mit dem Anwendungscode vorgenommen.
Sie benötigen eine ausgefeilte Möglichkeit, Ihre Datenbankschemaänderungen zu verfolgen. Normalerweise gibt es mehrere Ansätze:
Wenn Sie in einem Entwicklungsteam arbeiten, muss jeder darüber Bescheid wissen etwaige Schemaänderungen.
Wenn Sie auf einem Produktionsserver bereitstellen, benötigen Sie eine robuste Möglichkeit, Ihr Datenbankschema zu aktualisieren.
Wenn Sie auf mehreren Computern arbeiten, müssen Sie alle Datenbankschemata synchron halten.
Die Synchronisierung des Datenbankschemas mit dem Anwendungscode war in der Vergangenheit eine sehr mühsame Aufgabe, ohne dass Anwendungsentwickler strenge Konventionen und Disziplinen befolgen mussten. Der Entwickler (oder Datenbankadministrator) nimmt die erforderlichen Schemaänderungen vor. Wenn der Anwendungscode jedoch auf eine frühere Version zurückgesetzt wird, ist es schwierig, die Änderungen am Datenbankschema rückgängig zu machen, was dazu führt, dass die Datenbankversionsinformationen nicht mit den Versionsinformationen des Anwendungscodes übereinstimmen.
Mit der Migration unterstützt Laravel Sie bei der Weiterentwicklung der Datenarchitektur Ihrer Anwendung, ohne dass Sie die Datenbank jedes Mal löschen oder neu erstellen müssen, wenn Sie eine Änderung vornehmen. Kein Löschen und erneutes Erstellen bedeutet, dass Sie nicht bei jeder Änderung Daten verlieren. Die einzige Änderung bei einer Migration besteht darin, das Datenbankschema von einer Version in eine andere zu verschieben, unabhängig davon, ob vorwärts oder rückwärts.
Die Laravel-Migration bietet Ihnen die Möglichkeit, das Datenbankschema iterativ zu ändern. Sie erfordert keine Verwendung von SQL-Operationen, ermöglicht Ihnen jedoch die Verwendung von PHP-Code. Mit dem Laravel-Schemagenerator können wir schnell Datenbanktabellen erstellen und Spalten oder Indizes einfügen. Es verwendet eine saubere und ausdrucksstarke Syntax zum Bearbeiten von Datenbanken. Sie könnten denken, dass die Laravel-Migration eine Versionskontrolle Ihrer Datenbank ist.
Durch die Definition einer übergeordneten Schnittstelle zum Erstellen und Verwalten von Datenbankschemata können Sie diese datenbankunabhängig definieren. Indem Sie PHP verwenden, um Tabellen zu erstellen, Spalten und Indizes zu definieren, das Schema einmal zu schreiben und es auf jedes unterstützte Datenbank-Backend anzuwenden. Als zusätzlichen Bonus verfolgt Laravel, welche Migrationen angewendet wurden und welche noch angewendet werden müssen.
Eine Laravel-Migration ist lediglich eine PHP-Quelldatei im Verzeichnis app/database/migrations Ihrer Anwendung. Jede Datei enthält eine Reihe von Änderungen an der zugrunde liegenden Datenbank. Änderungen an der Datenbank werden im PHP-Code und nicht im datenbankspezifischen SQL vorgenommen. Ihr PHP-Migrationscode wird letztendlich in DDL konvertiert, das zu Ihrer aktuellen Datenbank passt, was den Wechsel der Datenbankplattform sehr einfach macht. Da der Migrationscode in einem eigenen Verzeichnis gespeichert wird, muss er wie anderer Projektcode in die Versionskontrolle einbezogen werden. Laravel-Migrationen werden explizit über die Befehlszeile mit Artisan-Tools ausgeführt.
In älteren Versionen von Laravel haben migrierte Dateien einfachere Namen, wie zum Beispiel 001_create_employees_table.php. Laravel 3 (Laravel 4.1 und gleich) brachte eine neue Namenskonvention mit sich, bei der sich der erste Teil des Namens von einer Sequenznummer in etwas Längeres änderte, wie 2014_03_11_032903_create_employees_table.php. Der Dateiname hat die Form YYYY_MM_DD_HHMMSS_some_meaningful_name.php, was einen identifizierten UTC-Zeitstempel gefolgt von einem Migrationsnamen bedeutet.
Die neuen, umfassenderen Namen helfen, Namenskonflikte zu vermeiden, und wenn Sie als Entwickler in einem Team arbeiten, können Sie Ihre eigenen Migrationen überprüfen.
Darüber hinaus migriert Laravel die Zeitstempel von Dateien, sodass diese nacheinander ausgeführt werden können. Zeitstempelnummern sind für Migrationen von entscheidender Bedeutung, da sie festlegen, welche Migration in der Reihenfolge angewendet wird, in der die einzelnen Migrationsversionsnummern angewendet werden.
Migrationen werden wie SQL-Skripte von oben ausgeführt, was die Ausführung dieser Dateien erfordert. Durch die sequentielle Ausführung entfällt die Möglichkeit, Spalten einzufügen, wenn die Tabelle nicht vorhanden ist.
Obwohl Sie Migrationsdateien manuell erstellen können, ist es einfacher (und weniger fehleranfällig), Artisan-Tools zum Generieren von Migrationsskripten zu verwenden. Sie können diese Dateien später bei Bedarf bearbeiten.
Verwenden Sie Artisan-Tools, um zur Datenbank zu migrieren. Laravel bietet eine Reihe handwerklicher Aufgaben, die sich auf die Durchführung einer bestimmten Reihe von Migrationen beschränken.
[Hinweis]Sie können die Handwerkerliste ausführen, um die Liste der vom Handwerker unterstützten Aufgaben anzuzeigen . Den meisten Aufgaben im Zusammenhang mit der Datenmigration wird migrate: vorangestellt.
Es gibt nur ein paar allgemeine Aufgaben, die Sie kennen müssen:
migrate:install
Die erste migrationsbezogene Handwerksaufgabe, die Sie verwenden können, ist migrate:install. Intern verwendet Laravel spezielle Tabellen, um zu verfolgen, welche Migrationen ausgeführt wurden. Um diese Tabelle zu erstellen, verwenden Sie einfach das artisan-Befehlszeilentool:
$php artisan migrate:install
migrate
Sie führen die Migrationsaufgabe aus, um die Datenbank Ihrer Tabelle regelmäßig zu aktualisieren um die neuesten Tabellen und Spalten zu unterstützen, die Sie Ihrer Anwendung hinzufügen. In seiner einfachsten Form führt es die up()-Methode nur bei allen Migrationen aus, die noch nicht ausgeführt wurden. Wenn es keine solche Migration gibt, wird es beendet. Diese Migrationen werden basierend auf dem Datum ausgeführt, an dem sie migriert wurden.
migrate:rollback
Beim Schreiben von Migrationen machen Sie gelegentlich Fehler. Wenn Sie die Migration bereits ausgeführt haben, können Sie die Migration nicht einfach bearbeiten und erneut ausführen: Laravel geht davon aus, dass die Migration bereits ausgeführt wurde, also wenn Sie artisan erneut ausführen
migrieren, bringt nichts. Sie müssen Handwerker verwenden
migrate:rollback setzt die Migration zurück, bearbeitet sie dann und führt dann artisan aus
migrieren, um die richtige Version auszuführen.
Im Allgemeinen ist das Bearbeiten einer bestehenden Migration keine gute Idee: Es erfordert zusätzliche Arbeit für Sie und Ihre Kollegen und es wird Kopfschmerzen bereiten, wenn die Migration bestehender Versionen bereits läuft an Produktionsmaschinen. Stattdessen müssen Sie eine neue Migration schreiben, um die erforderlichen Änderungen durchzuführen.
[Hinweis]Handwerker migrate:rollback löscht die letzte Migrationsanwendung. Laravel geht auf die gesamte Migrations-„Operation“ zurück. Wenn der letzte Migrationsbefehl daher 15 Migrationen ausgeführt hat, werden alle 15 Migrationen zurückgesetzt. Bitte beachten Sie, dass beim Löschen einer Spalte oder Tabelle Daten verloren gehen.
migrate:reset
Alle Migrationen rückgängig machen (alle Tabellen und Daten werden gelöscht)
migrate:refresh
artisan migrate:refresh task löscht die Datenbank und erstellt sie neu lädt das aktuelle Schema. Dies ist eine praktische Verknüpfung, um einen Reset durchzuführen und anschließend alle Migrationen erneut auszuführen.
migrate:make
artisan migrate:make Befehl erzählt
Laravel, um ein Migrationsdateiskelett zu generieren (das eigentlich eine
PHP-Datei) und speichern Sie sie im Ordner app/database/migrations. Anschließend können Sie diese Datei bearbeiten, um Ihre Tabellen-/Indexdefinitionen zu konkretisieren. Dann, Handwerker
Wenn der Migrationsbefehl ausgeführt wird, fragt Artisan diese Datei ab, um sie zu generieren
Tatsächlicher Code für SQL DDL.
Verwandte Empfehlungen:
So verbinden Sie Laravel5 über Freetds (Code) mit SQL Server
Das obige ist der detaillierte Inhalt vonEinfache Analyse der Datenbank und Datenbankmigration im Laravel-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!