DeePark.ru

Недавние комментарии
Автор: Kolelan | Опубликовано: 20.12.2016

Оглавление

Вступление

Ниже описывается подключение и использование расширения, которое дополняет стандартное использование миграций на Yii1 некоторыми нужными инструментами, например, централизованное использование миграций в подключаемых модулях. Вся информация о модуле, который мы будем использовать находится здесь https://github.com/yiiext/migrate-command

Подключение расширения

Подключение может, например, производится в файле /protected/config/console.php. Мы же миграции будем из консоли запускать. Так же следует помнить что если вы использовали миграции перед подключением этого модуля, то следует убедится что в таблицу, в которой хранятся миграций добавлен столбец „module“. Если нет то добавить:

ALTER TABLE `tbl_migration` ADD COLUMN `module` varchar(32) DEFAULT NULL;
UPDATE `tbl_migration` SET module='core';

'commandMap' => array(
	// Здесь может быть подключение каких-то модулей
	'migrate' => array(
		// псевдоним директории, в которую распаковано расширение
		'class' => 'application.extensions.improved-migrate.EMigrateCommand',
		// путь для хранения общих миграций
		'migrationPath' => 'application.migrations',
		// имя таблицы с версиями
		'migrationTable' => 'tbl_migration',
		// имя псевдомодуля для общих миграций. По умолчанию равно "core".
		'applicationModuleName' => 'core',
		// определяем все модули, для которых нужны миграции  
		// (в противном случае, модули будут взяты из конфигурации Yii)
		'modulePaths' => array(
			'module1' => 'application.modules.module1.migrations',
			'module2' => 'application.modules.module2.migrations',
			'module3' => 'application.modules.module3.migrations',
		),
		// можно задать имя поддиректории для хранения 
		// миграций в директории модуля
		// 'migrationSubPath' => 'migrations',
		// отключаем некоторые модули
		/* 'disabledModules' => array(
		  'gii', 'admin', // ...
		  ), */
		// название компонента для подключения к базе данных
		'connectionID' => 'db',
	// алиас шаблона для новых миграций
	// 'templateFile'=>'application.db.migration_template',
	),
	// Здесь тоже может быть подключение каких-то модулей
),

Создать расширенную миграцию

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

php yiic migrate create modulename create_user_table

Параметр --module=<modulename>

Далее во всех командах (up, down, history, new, to, mark) можно использовать параметр --module=<modulenames>, где <modulenames> может быть ограничивающим текущую команду списком имён модулей через запятую, или одним именем модуля, для которого нужно применить миграцию.

Применить миграцию

php yiic migrate --module=module1

php yiic migrate up [step] --module=module2,module3

Откатить миграцию

php yiic migrate down --module=module1

php yiic migrate down [step] --module=module2,module3

параметр [step] не обязательный, он задаёт количество миграций, которые надо откатить. По умолчанию откатывается последняя миграция.

Список команд для работы с миграциями

up [step] - Применение миграций

down [step] - Откат миграций

redo [step] - Повторное применение миграций

history [limit] - Просмотр информации о миграциях

new [limit] - Просмотр информации о не применённых миграциях

mark migration-name - Иногда требуется изменить историю миграций так, чтобы текущая версия была заменена на указанную без применения или отката миграций.

Дополнительные материалы

http://www.yiiframework.com/doc/guide/1.1/ru/database.migration

Оставить комментарий

Оставить комментарий могут только зарегистрированные пользователи