OSDN Git Service

Настройка travis-CI/CD
[invent/invent.git] / migrations / m200818_045741_create_types_table.php
1 <?php
2
3 use yii\db\Migration;
4
5 use app\models\Items;
6 /**
7  * Handles the creation of table `{{%types}}`.
8  * Добавление таблицы типов оборудования и свзянного с нею поля в таблице оборудования
9  */
10 class m200818_045741_create_types_table extends Migration
11 {
12     public $types = '{{%types}}';
13     /**
14      * {@inheritdoc}
15      */
16     public function safeUp()
17     {
18         // Создание таблицы типов
19         $this->createTable($types, [
20             'id'   => 'SERIAL',
21             'name' => $this->string(20)->comment('Тип оборудования'),
22         ]);
23         // Добавление основного ключа
24         $this->addPrimaryKey('id-types', $types, 'id');
25         
26         // Добавление комментария для описания таблицы
27         $this->addCommentOnTable( $types, 'Типы оборудования');
28         $this->addCommentOnColumn($types, 'id', 'Идентификатор типа (неизменяемое)');
29         
30         // Добавление поля типа оборудования в таблицу оборудования
31         $this->addColumn(Items::tableName(), 'type_id', $this->integer());
32         $this->addCommentOnColumn(Items::tableName(), 'type_id', 'Тип оборудования');
33         $this->createIndex('idx-items-types', Items::tableName(), 'type_id');
34         
35         // Добавление связи полей таблиц types и items
36         $this->addForeignKey('fk-items-types-id', Items::tableName(), 'type_id', $types, 'id', 'CASCADE');
37         
38         // Добавление базовых типов
39         $this->insert($types, ['name' => 'Компьютер']);
40         $this->insert($types, ['name' => 'Принтер']);
41         $this->insert($types, ['name' => 'МФУ']);
42         $this->insert($types, ['name' => 'Сканер']);
43         $this->insert($types, ['name' => 'ИБП']);
44         $this->insert($types, ['name' => 'Свич/коммутатор']);
45         $this->insert($types, ['name' => 'Модем']);
46         $this->insert($types, ['name' => 'Монитор']);
47     }
48
49     /**
50      * {@inheritdoc}
51      */
52     public function safeDown()
53     {
54         echo 'Отменить миграцию невозможно из-за внесённых данных';
55         return false;
56         // Удаление связи таблиц оборудования и типов
57         $this->dropForeignKey('fk-items-types-id', Items::tableName());
58         // Удаление индекса поля типов в таблице оборудования
59         $this->dropIndex('idx-items-types', Items::tableName());
60         // Удаление поля типов в таблице оборудования
61         $this->dropColumn(Items::tableName(), 'type_id');
62         // Удаление основного ключа в таблице типов
63         $this->dropPrimaryKey('id-types', $types);
64         // Удаление таблицы типов
65         $this->dropTable($types);
66     }
67 }