*/
class m200804_115556_create_items_table extends Migration
{
- public $table = Items::tableName();
/**
* {@inheritdoc}
*/
public function safeUp()
{
- $table = $this->table;
+ $table = Items::tableName();
$this->createTable($table, [
'id' => 'SERIAL',
'date' => $this->date()->comment('Дата внесения записи'),
*/
public function safeDown()
{
- $table = $this->table;
+ $table = Items::tableName();
$this->dropPrimaryKey('id_pk', $table);
$this->dropTable($table);
}
*/
class m200806_061656_update_items_table extends Migration
{
- public $table = Items::tableName();
/**
* {@inheritdoc}
*/
public function safeUp()
{
- $table = $this->table;
+ $table = Items::tableName();
$this->addColumn($table, 'comment', $this->string());
$this->addCommentOnColumn($table, 'comment', 'Дополнительная информация');
}
use yii\db\Migration;
use app\models\Items;
+use app\models\Status;
/**
* Handles the creation of table `{{%status}}`.
*/
class m200810_082546_create_status_table extends Migration
{
- public $status = '{{%status}}';
/**
* {@inheritdoc}
*/
public function safeUp()
{
+ $status = Status::tableName();
+ $items = Items::tableName();
// Создание таблицы состояний оборудования
$this->createTable($status, [
'id' => 'SERIAL',
$this->addCommentOnColumn($status, 'id', 'Номер по порядку');
// Создание в таблице оборудования колонки с состоянием
- $this->addColumn(Items::tableName(), 'state_id', $this->integer());
- $this->addCommentOnColumn(Items::tableName(), 'state_id', 'Состояние');
- $this->createIndex('idx-items-state', Items::tableName(), '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->update(Items::tableName(), [ 'state_id' => $ind ]);
+ $this->update($items, [ 'state_id' => $ind ]);
// Создадим связь между таблицами оборудования и состояния
- $this->addForeignKey('fk-items-status-id', Items::tableName(), 'state_id', $status, 'id', 'CASCADE');
+ $this->addForeignKey('fk-items-status-id', $items, 'state_id', $status, 'id', 'CASCADE');
}
/**
echo 'В связи с модификацией алгоритма работы программы от 17.08.2020, отмена миграции невозможна.'
return false;
+ $status = Status::tableName();
+ $items = Items::tableName();
// Удаление связи таблиц items и status
- $this->dropForeignKey('fk-items-status-id', Items::tableName());
+ $this->dropForeignKey('fk-items-status-id', $items);
// Удаление индексации поля состояний в таблице оборудования
- $this->dropIndex('idx-items-state', Items::tableName());
+ $this->dropIndex('idx-items-state', $items);
// Удаление поля состояния в таблице оборудования
- $this->dropColumn(Items::tableName(), 'state_id');
+ $this->dropColumn($items, 'state_id');
// Удаление основного ключа сортировки для таблицы состояний
$this->dropPrimaryKey('id_status', $status);
// Удаление талицы состояний
use yii\db\Migration;
use app\models\Items;
+use app\models\Types;
/**
* Handles the creation of table `{{%types}}`.
* Добавление таблицы типов оборудования и свзянного с нею поля в таблице оборудования
*/
class m200818_045741_create_types_table extends Migration
{
- public $types = '{{%types}}';
/**
* {@inheritdoc}
*/
public function safeUp()
{
+ $types = Types::tableName();
+ $items = Items::tableName();
// Создание таблицы типов
$this->createTable($types, [
'id' => 'SERIAL',
$this->addCommentOnColumn($types, 'id', 'Идентификатор типа (неизменяемое)');
// Добавление поля типа оборудования в таблицу оборудования
- $this->addColumn(Items::tableName(), 'type_id', $this->integer());
- $this->addCommentOnColumn(Items::tableName(), 'type_id', 'Тип оборудования');
- $this->createIndex('idx-items-types', Items::tableName(), 'type_id');
+ $this->addColumn($items, 'type_id', $this->integer());
+ $this->addCommentOnColumn($items, 'type_id', 'Тип оборудования');
+ $this->createIndex('idx-items-types', $items, 'type_id');
// Добавление связи полей таблиц types и items
- $this->addForeignKey('fk-items-types-id', Items::tableName(), 'type_id', $types, 'id', 'CASCADE');
+ $this->addForeignKey('fk-items-types-id', $items, 'type_id', $types, 'id', 'CASCADE');
// Добавление базовых типов
$this->insert($types, ['name' => 'Компьютер']);
+ $typeId = Yii::$app->db->getlastInsertID(); // Запомним идентификатор типа 'Компьютер'
$this->insert($types, ['name' => 'Принтер']);
$this->insert($types, ['name' => 'МФУ']);
$this->insert($types, ['name' => 'Сканер']);
$this->insert($types, ['name' => 'Свич/коммутатор']);
$this->insert($types, ['name' => 'Модем']);
$this->insert($types, ['name' => 'Монитор']);
+ $this->update($items, ['type_id' => $typeId ]);
}
/**
{
echo 'Отменить миграцию невозможно из-за внесённых данных';
return false;
+
+ $types = Types::tableName();
+ $items = Items::tableName();
// Удаление связи таблиц оборудования и типов
- $this->dropForeignKey('fk-items-types-id', Items::tableName());
+ $this->dropForeignKey('fk-items-types-id', $items);
// Удаление индекса поля типов в таблице оборудования
- $this->dropIndex('idx-items-types', Items::tableName());
+ $this->dropIndex('idx-items-types', $items);
// Удаление поля типов в таблице оборудования
- $this->dropColumn(Items::tableName(), 'type_id');
+ $this->dropColumn($items, 'type_id');
// Удаление основного ключа в таблице типов
$this->dropPrimaryKey('id-types', $types);
// Удаление таблицы типов
use yii\db\Migration;
use app\models\Items;
+use app\models\Locations;
+use app\models\Regions;
+
/**
* Handles the creation of table `{{%locations}}`.
* Has foreign keys to the tables:
*/
class m200818_123015_create_locations_table extends Migration
{
- public $regions = '{{%regions}}';
- public $locations = '{{%locations}}';
/**
* {@inheritdoc}
*/
public function safeUp()
{
+ $regions = Regions::tableName();
+ $locations = Locations::tableName();
+ $items = Items::tableName();
// Создание таблицы регионов
$this->createTable($regions, [
'id' => 'SERIAL',
$this->createIndex('idx-locations-region_id', $locations, 'region_id');
// Создание указателя места размещения в таблице оборудования
- $this->addColumn(Items::tableName(), 'location_id', $this->integer());
+ $this->addColumn($items, 'location_id', $this->integer());
// Добавление комментария для поля места размещения
- $this->addCommentOnColumn(Items::tableName(), 'location_id', 'Идентификатор места размещения');
+ $this->addCommentOnColumn($items, 'location_id', 'Идентификатор места размещения');
// Создание индексирования для указателя места размещения
- $this->createIndex('idx-items-location_id', Items::tableName(), 'location_id');
+ $this->createIndex('idx-items-location_id', $items, 'location_id');
// Создание связи между таблицами оборудования и размещений
- $this->addForeignKey('fk-items-locations-id', Items::tableName(), 'location_id', $locations, 'id', 'CASCADE');
+ $this->addForeignKey('fk-items-locations-id', $items, 'location_id', $locations, 'id', 'CASCADE');
// Создание связи `{{%regions}}`
$this->addForeignKey('fk-locations-regions-id', $locations, 'region_id', $regions, 'id', 'CASCADE');
+ $this->insert($regions, [ 'name' => 'Одинцовская ветеринарная станция' ]);
+ $regionId = Yii::$app->db->getlastInsertID();
+ $this->insert($locations, [ 'region_id' => $regionId, 'name' => 'Матвейково' ]);
+ $locationId = Yii::$app->db->getlastInsertID();
+ $this->update($items, [ 'location_id' => $locationId ]);
}
/**
*/
public function safeDown()
{
+ $regions = Regions::tableName();
+ $locations = Locations::tableName();
+ $items = Items::tableName();
// Удаление связи между таблицами locations и regions
$this->dropForeignKey('fk-locations-regions-id', $locations);
// Удаление связи таблиц оборудования и мест размещения
- $this->dropForeignKey('fk-items-locations-id', Items::tableName());
+ $this->dropForeignKey('fk-items-locations-id', $items);
// Удвление индексации для идентификатора мест размещения в таблице оборудования
- $this->dropIndex('idx-items-location_id', Items::tableName());
+ $this->dropIndex('idx-items-location_id', $items);
// Удаление идентификатора местра размещения из таблицы оборудования
- $this->dropColumn(Items::tableName(), 'location_id');
+ $this->dropColumn($items, 'location_id');
// удаление индексации для поля регионов
$this->dropIndex('idx-locations-region_id', $locations);
use app\models\Items;
use app\models\Locations;
use app\models\Status;
+use app\models\Moving;
/**
* Создание таблицы перемещения оборудования `{{%moving}}`.
*/
class m200826_081002_create_moving_table extends Migration
{
- private $tableName = '{{%moving}}';
/**
* {@inheritdoc}
*/
public function safeUp()
{
- $this->createTable( $this->tableName, [
+ $table = Moving::tableName();
+ $items = Items::tableName();
+ $locations = Locations::tableName();
+ $status = Status::tableName();
+ $this->createTable( $table, [
'id' => 'SERIAL',
'date' => $this->date()->notNull()->comment('Дата перемещения'),
'item_id' => $this->integer()->notNull()->comment('Идентификатор предмета/оборудования'),
'comment' => $this->text()->comment('Комментарии'),
]);
- $this->addCommentOnTable( $this->tableName, 'Таблица перемещений предмета/оборудования');
- $this->addCommentOnColumn( $this->tableName, 'id', 'Идентификатор записи (неизменяемое)');
+ $this->addCommentOnTable( $table, 'Таблица перемещений предмета/оборудования');
+ $this->addCommentOnColumn( $table, 'id', 'Идентификатор записи (неизменяемое)');
// Создание основного ключа
- $this->addPrimaryKey('pk-moving-id', $this->tableName, 'id');
+ $this->addPrimaryKey('pk-moving-id', $table, 'id');
// Создание ключа сортировки по дате
- $this->createIndex('idx-moving-date', $this->tableName, 'date');
+ $this->createIndex('idx-moving-date', $table, 'date');
// Создание ключа сортировки по коду оборудования
- $this->createIndex('idx-moving-item_id', $this->tableName, 'item_id');
+ $this->createIndex('idx-moving-item_id', $table, 'item_id');
// Создание связи между перемещениями и оборудованием
- $this->addForeignKey('fk-moving-item_id', $this->tableName, 'item_id', Items::tableName(), 'id', 'CASCADE');
+ $this->addForeignKey('fk-moving-item_id', $table, 'item_id', $items, 'id', 'CASCADE');
// Создание ключа сортировки по коду места размещения
- $this->createIndex('idx-moving-location_id', $this->tableName, 'location_id');
+ $this->createIndex('idx-moving-location_id', $table, 'location_id');
// Создание связи между перемещениями и местами размещения
- $this->addForeignKey('fk-moving-location_id', $this->tableName, 'location_id', Locations::tableName(), 'id', 'CASCADE');
+ $this->addForeignKey('fk-moving-location_id', $table, 'location_id', $locations, 'id', 'CASCADE');
// Создание ключа сортировки по коду состояния
- $this->createIndex('idx-moving-state_id', $this->tableName, 'state_id');
+ $this->createIndex('idx-moving-state_id', $table, 'state_id');
// Создание связи между перемещениями и состоянием оборудования
- $this->addForeignKey('fk-moving-state_id', $this->tableName, 'state_id', Status::tableName(), 'id', 'CASCADE');
+ $this->addForeignKey('fk-moving-state_id', $table, 'state_id', $status, 'id', 'CASCADE');
// Внесение первых движений из последнего состояния оборудования
foreach (Items::find()->all() as $val) {
- $this->insert( $this->tableName,
+ $this->insert( $table,
[
'date' => $val->date,
'item_id' => $val->id,
*/
public function safeDown()
{
+ $table = Moving::tableName();
// Удаление связи между перемещениями и оборудованием
- $this->dropForeignKey('fk-moving-item_id', $this->tableName);
+ $this->dropForeignKey('fk-moving-item_id', $table);
// Удаление ключа сортировки по коду оборудования
- $this->dropIndex('idx-moving-item_id', $this->tableName);
+ $this->dropIndex('idx-moving-item_id', $table);
// Удаление связи между перемещениями и местами расположения
- $this->dropForeignKey('fk-moving-location_id', $this->tableName);
+ $this->dropForeignKey('fk-moving-location_id', $table);
// Удаление ключа сортировки по коду местра размещения
- $this->dropIndex('idx-moving-location_id', $this->tableName);
+ $this->dropIndex('idx-moving-location_id', $table);
// Удаление связи между перемещениями и состояниями оборудования
- $this->dropForeignKey('fk-moving-state_id', $this->tableName);
+ $this->dropForeignKey('fk-moving-state_id', $table);
// Удаление ключа сортировки по коду состояния оборудования
- $this->dropIndex('idx-moving-state_id', $this->tableName);
+ $this->dropIndex('idx-moving-state_id', $table);
// Удаление ключа сортировки по дате
- $this->dropIndex('idx-moving-date', $this->tableName);
+ $this->dropIndex('idx-moving-date', $table);
// Удаление основного ключа
- $this->dropPrimaryKey('pk-moving-id', $this->tableName);
+ $this->dropPrimaryKey('pk-moving-id', $table);
// Удаление таблицы перемещений
- $this->dropTable($this->tableName);
+ $this->dropTable($table);
}
}
use yii\db\Migration;
+use app\models\Items;
+
/**
* Class m200902_095218_change_items_table
*/
public function safeUp()
{
echo 'Удаление неиспользуемых полей в таблице предметов/оборудования. Так же удаление уже не нужных связей. Отменить невозможно.';
- $table = '{{%items}}';
+ $table = Items::tableName();
$this->dropForeignKey('fk-items-locations-id', $table);
$this->dropForeignKey('fk-items-status-id', $table);
$this->dropIndex('idx-items-location_id', $table);
*/
public function safeUp()
{
- $this->addColumn(Items::tableName(), 'checked', $this->boolean());
- $this->addCommentOnColumn(Items::tableName(), 'checked', 'Флаг прохождения инвентаризации');
+ $table = Items::tableName();
+ $this->addColumn($table, 'checked', $this->boolean());
+ $this->addCommentOnColumn($table, 'checked', 'Флаг прохождения инвентаризации');
}
/**
*/
public function safeDown()
{
+ $table = Items::tableName();
$this->dropColumn(Items::tableName(), 'checked');
}
}
use yii\db\Migration;
use yii\helper\Security;
+use app\models\User;
+
/**
* Handles the creation of table `{{%users}}`.
*/
class m201019_061204_create_users_table extends Migration
{
- private $tableName = '{{%users}}';
/**
* {@inheritdoc}
*/
public function safeUp()
{
- $this->createTable($this->tableName, [
+ $table = User::tableName();
+ $this->createTable($table, [
'id' => 'SERIAL',
'username' => $this->string(128)->notNull()->unique(),
'password' => $this->string(128)->notNull(),
'password_reset_token' => $this->string(),
]);
- $this->addCommentOnTable( $this->tableName, 'Таблица пользователей');
- $this->addCommentOnColumn( $this->tableName, 'id', 'Идентификатор записи (неизменяемое)');
- $this->addCommentOnColumn( $this->tableName, 'username', 'Имя пользователя');
- $this->addCommentOnColumn( $this->tableName, 'password', 'Пароль');
- $this->addCommentOnColumn( $this->tableName, 'auth_key', 'Ключ авторизации');
- $this->addCommentOnColumn( $this->tableName, 'password_reset_token', 'Флаг сброса пароля');
+ $this->addCommentOnTable( $table, 'Таблица пользователей');
+ $this->addCommentOnColumn( $table, 'id', 'Идентификатор записи (неизменяемое)');
+ $this->addCommentOnColumn( $table, 'username', 'Имя пользователя');
+ $this->addCommentOnColumn( $table, 'password', 'Пароль');
+ $this->addCommentOnColumn( $table, 'auth_key', 'Ключ авторизации');
+ $this->addCommentOnColumn( $table, 'password_reset_token', 'Флаг сброса пароля');
// Создание основного ключа
- $this->addPrimaryKey('pk-users-id', $this->tableName, 'id');
+ $this->addPrimaryKey('pk-users-id', $table, 'id');
// Добавление администратора
- $this->insert($this->tableName, [
+ $this->insert($table, [
'username' => 'admin',
'password' => Yii::$app->getSecurity()->generatePasswordHash('admin'),
'access_token' => Yii::$app->getSecurity()->generateRandomString(),
]);
// Добавление пользователя
- $this->insert($this->tableName, [
+ $this->insert($table, [
'username' => 'user',
'password' => Yii::$app->getSecurity()->generatePasswordHash('user'),
'access_token' => Yii::$app->getSecurity()->generateRandomString(),
*/
public function safeDown()
{
+ $table = User::tableName();
// Удаление основного ключа
- $this->dropPrimaryKey('pk-users-id', $this->tableName );
+ $this->dropPrimaryKey('pk-users-id', $table );
// Удаление таблицы
- $this->dropTable($this->tableName);
+ $this->dropTable($table);
}
}