Laravel migrieren - mehrere Migrationen (Dateien) in einem Rutsch
Sagen, ich habe mehrere migration-Dateien aktualisieren einer Tabelle.
z.B.
2016_03_20_072730_create_tasks_table.php 2016_03_20_075467_create_tasks_table.php
... die kamen aus repo-durch die verschiedenen team-Mitglieder.
Jeder ist Anpassung etwas, das in der Tabelle, z.B. das hinzufügen einer Spalte.
Wenn ich versuche:
php artisan migrate
Bekomme ich Fehler:
PHP Fatal error: Cannot declare-Klasse CreateTasksTable, denn der name ist eady im Einsatz U:\www\b10\database\migrations\2016_03_20_072737_create_tasks_ le.php auf der Linie 30 [Symfony\Component\Debug\Exception\FatalErrorException] Kann nicht erklären, Klasse CreateTasksTable, denn der name ist bereits in Verwendung
Wie soll man umgehen mit der situation, wie oben beschrieben?
BEARBEITEN
Hier ist der code:
2016_03_20_072730_create_tasks_table.php:
Klasse CreateTasksTable erstreckt Migration { /** * Führen Sie die Migration. * * @return void */ public function up() { Schema::table('tasks', function ($Tabelle) { $table->string('task1'); }); } /** * Drehen Sie den Migrationen. * * @return void */ public function runter() { Schema::drop('Aufgaben'); } }
2016_03_20_075467_create_tasks_table.php:
Klasse CreateTasksTable erstreckt Migration { /** * Führen Sie die Migration. * * @return void */ public function up() { Schema::table('tasks', function ($Tabelle) { $table->string('task2'); }); } /** * Drehen Sie den Migrationen. * * @return void */ public function runter() { Schema::drop('Aufgaben'); } }
Du musst angemeldet sein, um einen Kommentar abzugeben.
Jeder migration verfügt über einen eindeutigen Klassennamen. Benennen Sie die zweite etwas mehr sinnvoll, wie
2016_03_20_075467_add_task2_to_tasks_table
undAddTask2ToTasksTable
, dann laufencomposer dump-autoload
zu machen Laravel finden Sie die änderungen. Jetzt können Sie migrieren.Edit: Jetzt, dass beide Migrationen' code bearbeitet wurde, in die Frage, ich kann sehen, dass die erste migration hat das gleiche problem, und sollte umbenannt werden in der gleichen Weise. Es ist wahrscheinlich eine Initiale erstellen, die migration irgendwann weiter nach hinten. Sie sollten aufhören, die Benennung editieren Migrationen nichts mit
create
, da Sie eigentlich nicht auf die Tabelle erstellen.php artisan make:migration create_tablename --create=tablename
, und für die Bearbeitung der Tabelle Migrationen, die ich verwendenphp artisan make:migration add_fieldname_to_tablename --table=tablename
. Anstelle von hinzufügen, dass ich vielleicht verwenden Sie Bearbeiten/löschen/drop etc. je nachdem, was ich versuche zu erreichen. Auf diese Weise sind Sie garantiert nicht dupliziert, es sei denn, Sie versehentlich versuchen, hinzufügen, duplizieren von Feldern oder Tabellen in die Datenbank - in dem Fall wäre es nicht trotzdem funktionieren. Hoffe, das hilft. 🙂