Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 2.87 KB

migration.md

File metadata and controls

63 lines (47 loc) · 2.87 KB

Migrate migrations

В Yii 2.0.10 появилась поддержка неймспейсов для миграций. Теперь нет необходимости использовать сторонние решения для поиска миграций в модулях. ModuleLoader из yii2-core находит все нужные неймспейсы, их необходимо только указать в app/config/console.php:

    'controllerMap' => [
        'migrate' => [
            'class' => '\yii\console\controllers\MigrateController',
            'migrationPath' => null,
            'migrationNamespaces' => ModuleLoader::getMigrationNamespaces(dirname(__DIR__)),
        ],
    ],

Если в вашем приложении используются миграции старого формата, то необходимо обновить их, выполнив следующих два шага:

  1. Добавьте неймспейс в каждый файл миграции
<?php

namespace app\profile\migrations;

use extpoint\yii2\base\Migration;

class M151217092337_ProfileInit extends Migration {
    // ...
}
  1. Когда вы запустите php yii migrate, то Yii выдаст вам все миграции, даже если они были выполнены ранее. Это происходит потому что в БД, в таблице migration записаны старые имена файлов миграций, без неймспейсов. Добавить новые имена нужно командой php yii migrate/mark ....

Смотрим, что у нас много новых миграций, которые на самоме деле все выполнены:

# php yii migrate
Yii Migration Tool (based on Yii v2.0.11.2)

Total 14 new migrations to be applied:
    extpoint\yii2\file\migrations\M160122150406_FileInitTables
    app\core\migrations\m170410_094620_upd_users
    ...
    app\core\migrations\m170411_103854_upd_settings
    app\gallery\migrations\m170411_104001_gallery_banner_setting
    app\core\migrations\M170419022612SettingAddAppTypeAppTypeParams
    app\gallery\migrations\M170419025323GallerySettingSetAppType

Apply the above migrations? (yes|no) [no]:^C

Отказываемся выполнять. Находим поиследнюю миграцию, которая выполнялась (в данном примере это m170411_104001_gallery_banner_setting) и пишем команду:

# php yii migrate/mark 'app\gallery\migrations\m170411_104001_gallery_banner_setting'
Yii Migration Tool (based on Yii v2.0.11.2)

Set migration history at app\gallery\migrations\m170411_104001_gallery_banner_setting? (yes|no) [no]:y
The migration history is set at app\gallery\migrations\m170411_104001_gallery_banner_setting.
No actual migration was performed.