pulsarvp/vps-tools

View on GitHub
src/modules/page/migrations/m171031_115501_init_page.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php
    /**
     * @author    Evgenii Kuteiko <kuteiko@mail.ru>
     * @copyright Copyright (c) 2017
     * @date      2017-10-31
     */
    use vps\tools\db\Migration;

    /**
     * Class m171031_115501_init_page
     */
    class m171031_115501_init_page extends Migration
    {
        /**
         * Create tables
         */
        public function up ()
        {

            $this->createTable('page', [
                'id'     => $this->primaryKey(),
                'guid'   => $this->string(128)->unique(),
                'title'  => $this->string(128)->notNull(),
                'text'   => $this->text()->notNull(),
                'active' => $this->boolean()->defaultValue(0),
                'dt'     => $this->dateTime()->null()
            ]);

            $this->createTable('pagemenu', [
                'pageID' => $this->integer()->notNull(),
                'menuID' => $this->integer()->null(),
            ]);
            $this->createIndex('page', 'pagemenu', 'pageID');
            $this->createIndex('menu', 'pagemenu', 'menuID');
            $this->addForeignKey('pagemenu_page', 'pagemenu', 'pageID', 'page', 'id');
            $this->addForeignKey('pagemenu_menu', 'pagemenu', 'menuID', 'menu', 'id', 'SET NULL');
        }

        /**
         * Drop tables
         */
        public function down ()
        {
            $this->dropForeignKey('pagemenu_menu', 'pagemenu');
            $this->dropForeignKey('pagemenu_page', 'pagemenu');
            $this->dropIndex('page', 'pagemenu');
            $this->dropIndex('menu', 'pagemenu');
            $this->dropTable('pagemenu');
            $this->dropTable('page');
        }
    }