=====Yii2 Миграции=====
Миграции - средства контролируемого изменения структуры БД, в частности в рамках Yii
====Вывод списка миграций доступных миграций====
// Применённые миграции
yii migrate/history # покажет последние 10 применённых миграций
yii migrate/history 5 # покажет последние 5 применённых миграций
yii migrate/history all # покажет все применённые миграции
// Новые (ещё Не применённые) миграции
yii migrate/new # покажет перые 10 новых миграций
yii migrate/new 5 # покажет перые 5 новых миграций
yii migrate/new all # покажет все новые миграции
====Создание миграции ====
В корне проекта выполняем консольную команду:
./yii migrate/create
Это создаст файл миграции с ключом (дополнит немного указанное вами имя) в:
@app/migrations
Далее вам придётся этот файл немного доработать (отредактировать), чтобы там было два метода
- для наката миграции
- и для её отката.
Вот пример миграции для монгоДБ -- главное что есть два метода:
class m170421_101724_add__index_to_results extends \yii\mongodb\Migration
{
public function up() // изменит БД
{
$this->createIndex('auto_ical.result', 'diagnostic_reports.pa_id', ['sparse' => true]);
}
public function down() // откатит изменения назад
{
$this->dropIndex('auto_ical.result', 'diagnostic_reports.pa_id');
}
}
====Применение миграции====
Применить все неприменённые миграции можно так:
yii migrate
А также можно "мигрировать", используя команды:
# используя временную метку определяющую миграцию
yii migrate/to 150101_185401
# используя строку, которая может быть получена путем использования функции strtotime()
yii migrate/to "2015-01-01 18:54:01"
# используя полное имя миграции (файла и класса)
yii migrate/to m150101_185401_create_news_table
# используя временную метку UNIX
yii migrate/to 1392853618
====Откат Миграций -- отмена====
Чтобы отменить (откатить) одну или несколько миграций, которые применялись ранее, нужно запустить следующую команду:
# отменяет самую последнюю применённую миграцию
yii migrate/down
# отменяет 3 последних применённых миграции
yii migrate/down 3
**Примечание:** Не все миграции являются обратимыми. При попытке отката таких миграций произойдёт ошибка и остановится весь процесс отката
====Источники (что почитать)====
Миграции хорошо описаны здесь: [[https://yiiframework.com.ua/ru/doc/guide/2/db-migrations/|https://yiiframework.com.ua/ru/doc/guide...]]