yii2 Пример SQL миграции с добавленим и удалением колонок, значениями по умолчанию, уникальных идексов

Пример кода файла миграции:


<?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); // этот столбец мы не создавали, а потому просто удаляем индекс 
    }
}