[!] 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 <migration_name>

Это создаст файл миграции с ключом (дополнит немного указанное вами имя) в:

@app/migrations

Далее вам придётся этот файл немного доработать (отредактировать), чтобы там было два метода --

  1. для наката миграции
  2. и для её отката.

Вот пример миграции для монгоДБ -- главное что есть два метода:

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...

Key Words for FKN + antitotal forum (CS VSU):