7 * Handles the creation of table `{{%types}}`.
8 * Добавление таблицы типов оборудования и свзянного с нею поля в таблице оборудования
10 class m200818_045741_create_types_table extends Migration
12 public $types = '{{%types}}';
16 public function safeUp()
18 // Создание таблицы типов
19 $this->createTable($types, [
21 'name' => $this->string(20)->comment('Тип оборудования'),
23 // Добавление основного ключа
24 $this->addPrimaryKey('id-types', $types, 'id');
26 // Добавление комментария для описания таблицы
27 $this->addCommentOnTable( $types, 'Типы оборудования');
28 $this->addCommentOnColumn($types, 'id', 'Идентификатор типа (неизменяемое)');
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');
35 // Добавление связи полей таблиц types и items
36 $this->addForeignKey('fk-items-types-id', Items::tableName(), 'type_id', $types, 'id', 'CASCADE');
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' => 'Монитор']);
52 public function safeDown()
54 echo 'Отменить миграцию невозможно из-за внесённых данных';
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);