yii2 Пример SQL миграции с добавленим и удалением колонок, значениями по умолчанию, уникальных идексов
Primary tabs
Пример кода файла миграции:
<?php use yii\db\Schema; use yii\db\Migration; class m170518_120715_add_fileds_to_orgatization extends Migration { private $table = '{{%organization}}'; // имя таблицы /** * Добавит колонки в и индексы таблицу */ public function safeUp() { // BIGINT $this->addColumn($this->table, 'INN', Schema::TYPE_BIGINT . ' AFTER OKTMO'); $this->addColumn($this->table, 'OGRN', Schema::TYPE_BIGINT . ' AFTER INN'); // VARCHAR длины 9 $this->addColumn($this->table, 'KPP', ' VARCHAR(9) AFTER OGRN'); // TINYINT (автоматически будет создан для логических значений) $this->addColumn($this->table, 'related_to_service', Schema::TYPE_BOOLEAN . ' DEFAULT 0 AFTER KPP '); $this->addColumn($this->table, 'is_private_organization', Schema::TYPE_BOOLEAN . ' DEFAULT 0 AFTER related_to_disaster_medicine_service'); // Добавляем индексы $this->createIndex('index_INN', $this->table, 'INN'); $this->createIndex('index_OGRN', $this->table, 'OGRN', true); // уникальный индекс (с требованием уникальности) $this->createIndex('index_KPP', $this->table, 'KPP'); // Составные (+уникальные) индексы: $this->createIndex('m_index_OKPO_INN', $this->table, 'OKPO, INN', true); $this->createIndex('m_index_INN_KPP', $this->table, 'INN, KPP', true); $this->createIndex('index_OKPO', $this->table, 'OKPO'); // индексируем столбец, созданный в предыдущих миграциях } /** * Удалит столбцы и индексы */ public function safeDown() { // сначала удаляем составные индексы -- чтобы не возникло проблем у уникальностью, после удаления одонго из столбцов $this->dropIndex('m_index_OKPO_INN', $this->table); $this->dropIndex('m_index_INN_KPP', $this->table); // затем удаляем столбцы $this->dropColumn($this->table, 'INN'); $this->dropColumn($this->table, 'OGRN'); $this->dropColumn($this->table, 'KPP'); $this->dropColumn($this->table, 'related_to_service'); $this->dropColumn($this->table, 'is_private_organization'); $this->dropIndex('index_OKPO', $this->table); // этот столбец мы не создавали, а потому просто удаляем индекс } }
- Log in to post comments
- 5662 reads