7 * Handles the creation of table `{{%locations}}`.
8 * Has foreign keys to the tables:
13 class m200818_123015_create_locations_table extends Migration
15 public $regions = '{{%regions}}';
16 public $locations = '{{%locations}}';
20 public function safeUp()
22 // Создание таблицы регионов
23 $this->createTable($regions, [
25 'name' => $this->string(120)->notNull()->unique()->comment('Наименование региона (подразделения)'),
28 // Добавлнение комментариев в таблицу и поля
29 $this->addCommentOnTable( $regions, 'Регионы (подразделения)');
30 $this->addCommentOnColumn($regions, 'id', 'Идентификатор региона (неизменяемое)');
32 // Создание основного ключа регионов
33 $this->addPrimaryKey('pk-regions-id', $regions, 'id');
35 // Создание таблицы расположений
36 $this->createTable($locations, [
38 'region_id' => $this->integer()->notNull()->comment('Идентификатор региона (подразделения)'),
39 'name' => $this->string(120)->notNull()->comment('Наименование маста размещения'),
42 // Добавлнение комментариев в таблицу и поля
43 $this->addCommentOnTable($locations, 'Места размещения оборудования');
44 $this->addCommentOnColumn($locations, 'id', 'Идентификатор места (неизменяемое)');
46 // Создание основного ключа
47 $this->addPrimaryKey('pk-locations-id', $locations, 'id');
49 // Создание индексирования для указателя региона
50 $this->createIndex('idx-locations-region_id', $locations, 'region_id');
52 // Создание указателя места размещения в таблице оборудования
53 $this->addColumn(Items::tableName(), 'location_id', $this->integer());
55 // Добавление комментария для поля места размещения
56 $this->addCommentOnColumn(Items::tableName(), 'location_id', 'Идентификатор места размещения');
58 // Создание индексирования для указателя места размещения
59 $this->createIndex('idx-items-location_id', Items::tableName(), 'location_id');
61 // Создание связи между таблицами оборудования и размещений
62 $this->addForeignKey('fk-items-locations-id', Items::tableName(), 'location_id', $locations, 'id', 'CASCADE');
64 // Создание связи `{{%regions}}`
65 $this->addForeignKey('fk-locations-regions-id', $locations, 'region_id', $regions, 'id', 'CASCADE');
71 public function safeDown()
73 // Удаление связи между таблицами locations и regions
74 $this->dropForeignKey('fk-locations-regions-id', $locations);
76 // Удаление связи таблиц оборудования и мест размещения
77 $this->dropForeignKey('fk-items-locations-id', Items::tableName());
79 // Удвление индексации для идентификатора мест размещения в таблице оборудования
80 $this->dropIndex('idx-items-location_id', Items::tableName());
82 // Удаление идентификатора местра размещения из таблицы оборудования
83 $this->dropColumn(Items::tableName(), 'location_id');
85 // удаление индексации для поля регионов
86 $this->dropIndex('idx-locations-region_id', $locations);
88 // удаление основного ключа для таблицы мест размещения
89 $this->dropPrimaryKey('pk-locations-id', $locations);
91 // Удаление таблицы размещений
92 $this->dropTable($locations);
94 // удаление основного ключа для таблицы регионов
95 $this->dropPrimaryKey('pk-regions-id', $regions);
97 // Удаление таблицы регионов
98 $this->dropTable($regions);