Задать вопрос
@Camaro67
Помог? - жми "Отметить решением"

Как именовать миграции, что бы избежать конфликта имен классов?

Здравствуйте! Как правильно именовать миграции, что бы избежать конфликта имен классов миграций?

Приведу пример, правда вымышленный, но суть отражает полностью. Допустим, создали миграцию с именем create_examples_table (имя класса CreateExamplesTable), которая в свою очередь создаст таблицу в базе данных. Через какое-то время мы эту таблицу решили удалить и создали соответствующую для этого миграцию. А спустя еще время решили, что эта таблица все же нужна и опять создали миграцию под именем create_examples_table (имя класса CreateExamplesTable). В итоге у нас получился конфликт в именовании классов, и при выполнении, например, команды php artisan migrate:reset мы получим ошибку.

Можно конечно добавлять к имени миграции дату, но это на мой взгляд так себе решение.
UPD: под добавлять к имени миграции дату имелось ввиду добавлять дату не вручную, а сделать обертку над стандартной командой make:migration.

Заранее спасибо за дельные советы.
  • Вопрос задан
  • 1512 просмотров
Подписаться 4 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 3
dlnsk
@dlnsk
ПК Партнер 01.01 -> ПК Поиск -> IBM PC
Проблема высосана из пальца.
Ну случился у вас конфликт - добавили "2" к классу, выполнили dump-autoload и все! Такое впечатление, что вы через день удаляете и восстанавливаете таблицы.
Ответ написан
Комментировать
@myxasa
первая миграция создает таблицу
потом вам через месяц преспичело удалить таблицу - делаете миграцию где на UP у вас sql запрос в стиле DROP TABLE, но на методе down() вы должны СОЗДАТЬ ЭТУ ТАБЛИЦУ как и было раньше

в этом случаее все будет ок
Ответ написан
ajaxtelamonid
@ajaxtelamonid
Laravel
Ну есть старое правило - называть миграции максимально многословно, чтобы такого не случалось. create_table_for_examples_again например. Ты же в названиях миграций не ограничен ничем, никакими правилами совместимости или соглашениями по стилю кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы