Skip to content

Миграции БД

Создание миграции

shell
php7.4 tools/migrate -create -name название миграции

Класс миграции будет создан в директории migrations

Выполнение миграции

shell
php7.4 tools/migrate -apply

Написание миграции

Код выполнения миграции пишется внутри метода commit в созданном классе миграции

Создание экземпляра класса таблицы, в конструктор подается название таблицы (не важно новой или существующей). Если префикс таблиц проекта не указан в названии таблицы - он подставится автоматически при выполнении миграции.

php
$obTable = new appCplMigrationTable("table_name");

Поля таблицы описываются методами column, при этом не обзятельно описывать все поля - те поля что отсуствуют - не изменятся.

Метод column принимает 5 аргументов:

  1. Название поля
  2. Тип
  3. Опционально длина, null, если отсутствует (или бессмысленно)
  4. Флаг nullable
  5. Значение по умолчанию

Метод возвращает класс поля, который имеет ряд встроенных методов:

  • setAutoIncrement - указание автоинкрементости поля
  • setIndex - указания что необходимо создать индекс для поля
  • delete - указание для удаления поля
php
$obTable = new appCplMigrationTable("cpl_migrations");
$obTable->column('id', 'int', 11, false)->setAutoIncrement(); //Указание автоинкрементости
$obTable->column('migration_class', 'varchar', 255, false, null);
$obTable->column('hash', 'varchar', 255, false, null);
$obTable->column('date', 'datetime', null, false, null)->setIndex(); //Необходимо создать индекс
$obTable->column('name', 'varchar', 255, false, null);
$obTable->column('status', 'int', 1, false,0);
$obTable->column('test', 'int', 1, false,0)->delete(); //Необходимо удалить поле
$obTable->save();