8 * Handles the creation of table `{{%types}}`.
9 * Добавление таблицы типов оборудования и свзянного с нею поля в таблице оборудования
11 class m200818_045741_create_types_table extends Migration
16 public function safeUp()
18 $types = Types::tableName();
19 $items = Items::tableName();
20 // Создание таблицы типов
21 $this->createTable($types, [
23 'name' => $this->string(20)->comment('Тип оборудования'),
25 // Добавление основного ключа
26 $this->addPrimaryKey('id-types', $types, 'id');
28 // Добавление комментария для описания таблицы
29 $this->addCommentOnTable( $types, 'Типы оборудования');
30 $this->addCommentOnColumn($types, 'id', 'Идентификатор типа (неизменяемое)');
32 // Добавление поля типа оборудования в таблицу оборудования
33 $this->addColumn($items, 'type_id', $this->integer());
34 $this->addCommentOnColumn($items, 'type_id', 'Тип оборудования');
35 $this->createIndex('idx-items-types', $items, 'type_id');
37 // Добавление связи полей таблиц types и items
38 $this->addForeignKey('fk-items-types-id', $items, 'type_id', $types, 'id', 'CASCADE');
40 // Добавление базовых типов
41 $this->insert($types, ['name' => 'Компьютер']);
42 $typeId = Yii::$app->db->getlastInsertID(); // Запомним идентификатор типа 'Компьютер'
43 $this->insert($types, ['name' => 'Принтер']);
44 $this->insert($types, ['name' => 'МФУ']);
45 $this->insert($types, ['name' => 'Сканер']);
46 $this->insert($types, ['name' => 'ИБП']);
47 $this->insert($types, ['name' => 'Свич/коммутатор']);
48 $this->insert($types, ['name' => 'Модем']);
49 $this->insert($types, ['name' => 'Монитор']);
50 $this->update($items, ['type_id' => $typeId ]);
56 public function safeDown()
58 echo 'Отменить миграцию невозможно из-за внесённых данных';
61 $types = Types::tableName();
62 $items = Items::tableName();
63 // Удаление связи таблиц оборудования и типов
64 $this->dropForeignKey('fk-items-types-id', $items);
65 // Удаление индекса поля типов в таблице оборудования
66 $this->dropIndex('idx-items-types', $items);
67 // Удаление поля типов в таблице оборудования
68 $this->dropColumn($items, 'type_id');
69 // Удаление основного ключа в таблице типов
70 $this->dropPrimaryKey('id-types', $types);
71 // Удаление таблицы типов
72 $this->dropTable($types);