use yii\db\Migration;
+use app\models\Items;
+use app\models\Status;
+
/**
* Handles the creation of table `{{%status}}`.
* Добавление таблицы состояний оборудования, и свзянного с ним поля в таблицу оборудования
*/
public function safeUp()
{
+ $status = Status::tableName();
+ $items = Items::tableName();
// Создание таблицы состояний оборудования
- $this->createTable('{{%status}}', [
- 'id' => $this->primaryKey(),
+ $this->createTable($status, [
'id' => 'SERIAL',
- 'name' => $this->string(20)->notNull()->unique(),
+ 'name' => $this->string(20)->notNull()->unique()->comment('Состояние'),
]);
// Главный ключ
- $this->addPrimaryKey('id_status', '{{%status}}', 'id');
+ $this->addPrimaryKey('id_status', $status, 'id');
// Добавление описания таблице и колонкам
- $this->addCommentOnTable('{{%status}}', 'Статусы состояния объектов');
- $this->addCommentOnColumn('{{%status}}', 'id', 'Номер по порядку');
- $this->addCommentOnColumn('{{%status}}', 'name', 'Состояние');
+ $this->addCommentOnTable( $status, 'Статусы состояния объектов');
+ $this->addCommentOnColumn($status, 'id', 'Номер по порядку');
// Создание в таблице оборудования колонки с состоянием
- $this->addColumn('{{%items}}', 'state_id', $this->integer());
- $this->addCommentOnColumn('{{%items}}', 'state_id', 'Состояние');
- $this->createIndex('idx-items-state', '{{%items}}', 'state_id');
+ $this->addColumn($items, 'state_id', $this->integer());
+ $this->addCommentOnColumn($items, 'state_id', 'Состояние');
+ $this->createIndex('idx-items-state', $items, 'state_id');
// Добавление состояний в табличу
- $this->insert('{{%status}}', ['name' => 'Склад']);
- $this->insert('{{%status}}', ['name' => 'Работает']);
+ $this->insert($status, ['name' => 'Склад']);
+ $this->insert($status, ['name' => 'Работает']);
$ind = Yii::$app->db->getlastInsertID(); // Запомним идентификатор состояния 'Работает'
- $this->insert('{{%status}}', ['name' => 'Сломано']);
- $this->insert('{{%status}}', ['name' => 'Ремонт']);
- $this->insert('{{%status}}', ['name' => 'К списанию']);
- $this->insert('{{%status}}', ['name' => 'Списано']);
+ $this->insert($status, ['name' => 'Сломано']);
+ $this->insert($status, ['name' => 'Ремонт']);
+ $this->insert($status, ['name' => 'К списанию']);
+ $this->insert($status, ['name' => 'Списано']);
// Всем объектам назначим состояние 'Работает'
- $this->update('{{%items}}', [ 'state_id' => $ind ]);
+ $this->update($items, [ 'state_id' => $ind ]);
// Создадим связь между таблицами оборудования и состояния
- $this->addForeignKey('fk-items-status-id', '{{%items}}', 'state_id', '{{%status}}', 'id', 'CASCADE');
+ $this->addForeignKey('fk-items-status-id', $items, 'state_id', $status, 'id', 'CASCADE');
}
/**
*/
public function safeDown()
{
- echo 'В связи с модификацией алгоритма работы программы от 17.08.2020, отмена миграции невозможна.'
+ echo 'В связи с модификацией алгоритма работы программы от 17.08.2020, отмена миграции невозможна.';
return false;
+ $status = Status::tableName();
+ $items = Items::tableName();
// Удаление связи таблиц items и status
- $this->dropForeignKey('fk-items-status-id', '{{%items}}');
+ $this->dropForeignKey('fk-items-status-id', $items);
// Удаление индексации поля состояний в таблице оборудования
- $this->dropIndex('idx-items-state', '{{%items}}');
+ $this->dropIndex('idx-items-state', $items);
// Удаление поля состояния в таблице оборудования
- $this->dropColumn('{{items}}', 'state_id');
+ $this->dropColumn($items, 'state_id');
// Удаление основного ключа сортировки для таблицы состояний
- $this->dropPrimaryKey('id_status', '{{%status}}');
+ $this->dropPrimaryKey('id_status', $status);
// Удаление талицы состояний
- $this->dropTable('{{%status}}');
+ $this->dropTable($status);
}
}