m180830_085211_create_speakers_tables.php 1.95 KB
<?php
    
    use yii\db\Migration;
    
    /**
     * Class m180830_085211_create_speakers_tables
     */
    class m180830_085211_create_speakers_tables extends Migration
    {
        /**
         * {@inheritdoc}
         */
        public function safeUp()
        {
            $this->createTable(
                'speaker',
                [
                    'id'       => $this->primaryKey(),
                    'sort'     => $this->integer(),
                    'image_id' => $this->integer(),
                    'status'   => $this->boolean(),
                ]
            );
            
            $this->createTable(
                'speaker_lang',
                [
                    'speaker_id'   => $this->integer(),
                    'language_id'  => $this->integer(),
                    'name'         => $this->string(),
                    'organization' => $this->text(),
                    'position'     => $this->text(),
                ]
            );
            
            $this->createIndex(
                'spkr_idx',
                'speaker_lang',
                [
                    'speaker_id',
                    'language_id',
                ],
                true
            );
            
            $this->addForeignKey('spkr_fk', 'speaker_lang', 'speaker_id', 'speaker', 'id', 'CASCADE', 'CASCADE');
            
            $this->addForeignKey('lng_fk', 'speaker_lang', 'language_id', 'language', 'id', 'CASCADE', 'CASCADE');
        }
        
        /**
         * {@inheritdoc}
         */
        public function safeDown()
        {
            $this->dropForeignKey('lng_fk', 'speaker_lang');
            
            $this->dropForeignKey('spkr_fk', 'speaker_lang');
            
            $this->dropIndex(
                'spkr_idx',
                'speaker_lang'
            );
            
            $this->dropTable('speaker_lang');
            
            $this->dropTable('speaker');
        }
    }