Загружаем изображение…
Кладбище миграций в Yii2

- Миграции...миграции никогда не меняются -

tl;dr

Если папка migrations разрослась до размеров энциклопедии -
разнесите миграции по подпапкам и добавьте их в migrationPath.

В начале проекта всё аккуратно, красиво, лакончно:

m240101_create_user_table.php
m240102_add_index_to_user.php


Через пару месяцев проблема нарастает:

m240101_create_user_table.php
m240102_add_index_to_user.php
m240203_fix_index.php
m240205_fix_index_again.php
m240206_final_fix_index_really.php
m240207_why_it_does_not_work.php


А через год папка migrations выглядит как кладбище древней цивилизации. ☠

Но в Yii2 предусмотрели способ навести порядок - можно разнести миграции по папкам.

Создаём миграцию сразу в нужной директории:
php yii migrate/create --migrationPath=@app/migrations/campaign create_campaign_table

И немного подсказываем фреймворку, где теперь их искать:
'controllerMap' => [
'migrate' => [
'class' => MigrateController::class,
'migrationPath' => [
'@app/migrations',
'@app/migrations/attachment',
'@app/migrations/campaign',
'@app/migrations/company',
'@app/migrations/contacts',
'@app/migrations/geobase',
'@app/migrations/invoice',
]
],
]


После этого yii migrate спокойно пройдётся по всем папкам и применит всё как обычно.

А структура проекта станет намного приятнее:
migrations/
├ attachments/
├ campaign/
├ company/
├ contacts/
└ invoice/


Yii2 всё поймёт - даже на кладбище файлов.

А вот человек через полгода хотя бы будет понимать, где искать fix_final_really_final_column.php.

#php #backend #yii2 #migration #миграции #web #разработка
Просмотры: 76
Открыть в MAX Сообщить о неточности

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти