Создание пользовательского класса для миграции.
/protected/components or /protected/extension/db (as you wish)
class CustomMigration extends CDbMigration
{
protected function getMyVar()
{
return 'Custom migration';
}
}
Перейти к консоли, путь к защищенной, выполнить команду 'yiic migrate create test'. Перейти к сгенерированному файлу миграции и изменения в:
class m150602_071449_test extends CustomMigration
{
public function up()
{
echo $this->getMyVar();
die();
}
...
тестирование. Запустите консоль «yiic migrate».
Apply the above migration? (yes|no) [no]:yes
*** applying m150602_071449_test
Custom migration <------- my function
Для шаблона переопределения миграции:
//console config
'components'=>array(/*...*/),
'commandMap'=>array(
'migrate'=>array(
'class'=>'system.cli.commands.MigrateCommand',
'migrationPath'=>'application.migrations',
'migrationTable'=>'tbl_migration',
'connectionID'=>'db',
'templateFile'=>'application.migrations.template',
),
),
//template for migrations /protected/migrations/template.php
<?php
class {ClassName} extends CustomMigration
{
public function up()
{
}
//other methods...
}
Проверить новое содержание миграции yiic migrate create test
. Новая миграция будет получать контент из /protected/migrations/template.php
Хорошо, но мне нужно, чтобы CustomMigration был добавлен в файл созданного переноса автоматически при выполнении 'migrate create name' – Wizard
Я знаю, что мы можем использовать templateFile для миграции , Это лучший способ. Но я никогда не использую это. http://www.yiiframework.com/doc/guide/1.1/en/database.migration –
Я обновил ответ. Вы можете проверить новую версию. Надеюсь, это поможет вам. –