m180123_234322_create_object_lang_table.php 3.47 KB
<?php

use yii\db\Migration;

/**
 * Handles the creation of table `object_lang`.
 * Has foreign keys to the tables:
 *
 * - `object`
 * - `language`
 * - `alias`
 */
class m180123_234322_create_object_lang_table extends Migration
{
    /**
     * @inheritdoc
     */
    public function up()
    {
        $this->createTable('object_lang', [
            'object_id' => $this->integer()->notNull(),
            'language_id' => $this->integer()->notNull(),
            'alias_id' => $this->integer()->notNull()->unique(),
            'upper_text' => $this->text(),
            'about_object_text' => $this->text(),
            'object_name' => $this->string(50),
            'meta_title' => $this->string(300),
            'meta_description' => $this->string(300),
            'h1' => $this->string(50),
        ]);

        // creates index for column `object_id`
        $this->createIndex(
            'idx-object_lang-object_id',
            'object_lang',
            'object_id'
        );

        // add foreign key for table `object`
        $this->addForeignKey(
            'fk-object_lang-object_id',
            'object_lang',
            'object_id',
            'object',
            'id',
            'CASCADE'
        );

        // creates index for column `language_id`
        $this->createIndex(
            'idx-object_lang-language_id',
            'object_lang',
            'language_id'
        );

        // add foreign key for table `language`
        $this->addForeignKey(
            'fk-object_lang-language_id',
            'object_lang',
            'language_id',
            'language',
            'id',
            'CASCADE'
        );

        // creates index for column `alias_id`
        $this->createIndex(
            'idx-object_lang-alias_id',
            'object_lang',
            'alias_id'
        );

        // add foreign key for table `alias`
        $this->addForeignKey(
            'fk-object_lang-alias_id',
            'object_lang',
            'alias_id',
            'alias',
            'id',
            'CASCADE'
        );
        
        // add double primary key
        $this->addPrimaryKey(
            "pk-object_lang-object_id-language_id",
            "object_lang",
            [
                "object_id",
                "language_id",
            ]
        );
    }

    /**
     * @inheritdoc
     */
    public function down()
    {
        // drop double primary key
        $this->dropPrimaryKey(
            "pk-object_lang-object_id-language_id",
            "object_lang"
        );
        
        // drops foreign key for table `object`
        $this->dropForeignKey(
            'fk-object_lang-object_id',
            'object_lang'
        );

        // drops index for column `object_id`
        $this->dropIndex(
            'idx-object_lang-object_id',
            'object_lang'
        );

        // drops foreign key for table `language`
        $this->dropForeignKey(
            'fk-object_lang-language_id',
            'object_lang'
        );

        // drops index for column `language_id`
        $this->dropIndex(
            'idx-object_lang-language_id',
            'object_lang'
        );

        // drops foreign key for table `alias`
        $this->dropForeignKey(
            'fk-object_lang-alias_id',
            'object_lang'
        );

        // drops index for column `alias_id`
        $this->dropIndex(
            'idx-object_lang-alias_id',
            'object_lang'
        );

        $this->dropTable('object_lang');
    }
}