2013-04-20 8 views
5

Ich habe eine Migration namens CreateItemsTable; Ich habe das ausgeführt, ich habe Artikel in dieser Tabelle, jetzt muss ich ein neues Feld zur Tabelle hinzufügen. Ich kann nicht einfach ein Feld zur Migrationsdatei und migrate:refresh hinzufügen, weil ich die Daten brauche, die darin enthalten sind.Laravel Migration Feld hinzufügen, nachdem Daten in der Tabelle sind?

Soll ich eine weitere Migration durchführen, um ein Feld hinzuzufügen? Das scheint Unordnung zu sein, während ich Dinge in der Entwicklung teste, könnte ich die Felder wechseln. Ich bin mir nicht sicher, ob Migrationen sauberer sind als nur PhpMyAdmin ... oder verstehe ich sie vielleicht nicht?

Antwort

8

Ja, jedes Mal, wenn Sie eine Tabelle auf irgendeine Art ändern müssen, erstellen Sie eine neue Migration dafür. Das ist der springende Punkt von Migrationen. Wenn Sie in einer Umgebung für die Zusammenarbeit arbeiten und einige Änderungen aus einem Remote-Repository abrufen, sollten Sie eine der Aufgaben ausführen, die andere Entwickler möglicherweise erstellt haben (wenn Sie mit einer Datenbank arbeiten). Dies hält Ihre Datenbanken synchron.

Sicher können Sie gelegentlich Spalten hinzufügen und hinzufügen, aber es ist keine große Sache. Wenn Sie zum ersten Mal eine Tabelle erstellen, verwenden Sie wahrscheinlich Schema::create(). Alle nachfolgenden Migrationen für diese Tabelle sollten Scheme::table() verwenden. Es akzeptiert die gleichen Parameter, außer dass es nicht versucht zuerst die Tabelle zu erstellen.

+0

Ahh, ich sehe, so Ihr Git Repo würde alle Datenbankschema in den Migrationen haben, sehr cool! –

+3

Genau. Und das Migrations-Skript weiß, dass Migrationen neu sind, sodass es die bereits auf die Datenbank angewendeten nicht erneut ausführt. –

+1

Können wir eine einzelne Migration zurücksetzen oder aktualisieren? Nehmen wir an, in der Produktions-DB haben wir Benutzerdaten, und wir machen die Migration: Rollback oder Migration: Aktualisieren, dann werden wir alle Daten verlieren. – Sameer

Verwandte Themen