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(),
- "id" => "SERIAL",
- "name" => $this->string(20)->notNull()->unique(),
+ $this->createTable($status, [
+ 'id' => 'SERIAL',
+ '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" => "Работает"]);
- $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' => 'Работает']);
+ $ind = Yii::$app->db->getlastInsertID(); // Запомним идентификатор состояния 'Работает'
+ $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);
}
}