Добавление миграции в Yii2 - это процесс создания и применения изменений в базе данных с использованием концепции миграций. Миграции позволяют разработчикам легко добавлять, изменять или удалять таблицы, столбцы и индексы в базе данных.
Для того чтобы создать миграцию в Yii2, вам понадобится выполнить следующие шаги:
- Создайте новый класс миграции в каталоге
migrations
. Название класса должно быть уникальным и соответствовать шаблону<timestamp>_<MigrationName>
. Например,m190912_120000_create_users_table
.
- Внутри класса миграции определите две основные методы:
up()
иdown()
. Методup()
содержит код, который будет выполнен при применении миграции, а методdown()
содержит код, который будет выполнен при откате миграции.
- В методе
up()
вы можете использовать методы классаyiidbMigration
, такие какcreateTable()
,addColumn()
,createIndex()
и т.д., чтобы создавать таблицы, изменять столбцы или создавать индексы.
- В методе
down()
вы должны определить обратные операции для каждого изменения, выполненного в методеup()
. Например, если вы создали таблицу вup()
, вdown()
необходимо удалить эту таблицу.
- Затем, чтобы применить миграцию, выполните команду
yii migrate/up
в командной строке. Yii2 автоматически применит все новые миграции, которые еще не были применены в базе данных.
- Если вам нужно откатить миграцию, выполните команду
yii migrate/down
. Yii2 выполнит методdown()
для последней примененной миграции и удалит ее изменения из базы данных.
Вы также можете использовать команду yii migrate/create <MigrationName>
для создания файла миграции автоматически. Просто укажите имя миграции без временной метки, и Yii2 сгенерирует файл миграции в каталоге migrations
.
Кроме того, миграции могут быть полезны при работе в командной строке, а также при развертывании приложения на разных серверах. Они обеспечивают простой и надежный способ изменения базы данных на всех экземплярах вашего приложения.
Надеюсь, эта информация помогла вам лучше понять, как добавить миграцию в Yii2. Если у вас есть какие-либо дополнительные вопросы, не стесняйтесь задавать.