Powiedzmy, mam wiele plików migracyjnych aktualizujących jedną tabelę.Laravel migrować - wiele migracji (plików) za jednym razem
np.
2016_03_20_072730_create_tasks_table.php 2016_03_20_075467_create_tasks_table.php
... która pochodzi z repo przez różnych członków zespołu. Każdy dostosowuje coś w tabeli, np. dodanie kolumny.
Kiedy próbuję:
php artisan migrate
otrzymuję błąd:
PHP Fatal error: Cannot declare class CreateTasksTable, because the name is eady in use in U:\www\b10\database\migrations\2016_03_20_072737_create_tasks_ le.php on line 30 [Symfony\Component\Debug\Exception\FatalErrorException] Cannot declare class CreateTasksTable, because the name is already in use
Jak należy radzić sobie z sytuacji jak opisana powyżej?
EDIT
Oto kod:
2016_03_20_072730_create_tasks_table.php:
class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function ($table) { $table->string('task1'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tasks'); } }
2016_03_20_075467_create_tasks_table.php:
class CreateTasksTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::table('tasks', function ($table) { $table->string('task2'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::drop('tasks'); } }
Tak, doszedłem do tego samego wniosku z błędem, ale migracja miała być o wiele większa niż wykonanie DB ręcznie. Podobno powinieneś po prostu uzyskać najnowsze repozytorium, uruchomić migrację i wypić piwo. Wygląda jednak na to, że aktualizacje ręczne nie są zbyt daleko w tyle za tą "super najlepszą rzeczą od krojonego chleba";) Teraz musisz albo zmodyfikować plik migracyjny, połączyć pliki migracyjne, albo przenieść każdy do temp i użyć - -path, itp. Tak, myślę, że to jest cytryna. Dużo gadaj, mała rączka. Chyba że jest łatwy sposób - stąd moje pytanie. – Jeffz
To jest łatwe - musisz tylko nazwać swoje migracje logicznie. Nie musisz nic robić w bazie danych. Ujmijmy to w ten sposób: praca z modelami jest naprawdę łatwa. Ale jeśli spróbujesz nazwać dwa modele tą samą rzeczą, to nie zadziała. Czy uważasz, że sprawia to, że modele również są trudne do pracy? :) Po prostu ucz swoich członków zespołu, aby nadali różne nazwy różnym imigracjom i dosłownie wszystko, czego potrzebujesz. –
Pliki migracji są automatycznie tworzone przez Laravel. Skoro istnieje skrót do tworzenia, czy Laravel będzie tak trudno dodawać losowy ciąg/hasz do nazwy klasy? Chyba że jest coś, co krzyczy przeciwko tej procedurze. Dziękuję Joel za poświęcony czas. – Jeffz