Миграция базы данных
Модуль Миграции для разработчиков
использует класический подход в виде инсталятора. Инсталлятор — это класс с двумя методами:
up
накатить миграциюdown
откатить миграцию
Установка модуля
Установка модуля стандартная и не требует нестандартных действий. До момента установки модуля убедитесь, что на сайте есть путь /local/php_interface/
, в который скриптом будут добавлены две папки:
migrations
migrations.archive
Если указанного выше пути нет, в файловой структуре, эти две папки создадутся в /bitrix/php_interface/
, что будет нарушением парадигмы использования папки /local/
в качестве основной для разработки.
Настройка модуля
Сразу после установки, модуль готов к использованию. На странице Настройки модуля
расположенной по адресу /bitrix/admin/settings.php?lang=ru&mid=sprint.migration
можно:
- Просмотреть параметры предустановленной конфигурации
- Создать свою конфигурацию (отличную от предустановленной)
- Удалить файл конфигурации, файлы миграций и записи в таблице миграций
- Установить гаджет "Сводка по миграциям"
- Сбросить настройки модуля
Создание миграций
Модуль расположен по следующиму пути: Настройки -> Миграции для разработчиков -> Миграции (cfg)
, модуль позволяет создавать миграции двумя способами:
- Вручную создать собственную миграцию. Для этого необходимо, создать болванку миграции, используя блок
Создать простую миграцию
и дописать в нее свой код, опираясь на документацию - Использовать предустановленные миграции
Предустановленные миграции
В модуле уже содержатся типовые миграции, которые сразу можно использовать:
- Создать миграцию для инфоблока
- Перенести элементы инфоблоков
- Создать миграцию для пользовательских полей
- Создать миграцию для настроек модулей
- Создать миграцию для почтовых событий
- Создать миграцию для групп пользователей
- Создать миграцию для highload-блока
- Перенести элементы highload-блоков
- Создать миграцию для агентов
- Создать миграцию для веб-формы
- Создать миграцию для пользовательских настроек
Практический пример создания миграции
Рассмотрим создание миграции на примере миграции для инфоблока. Для теста был создан новый тип инфоблока и в нем инфоблок, в инфоблоке были настроены:
- Поля
- Поля разделов
- Доступы
- Подписи
- Журнал событий
Также в ифоблоке были созданы свойства разных типов.
Переходим в раздел Настройки -> Миграции для разработчиков -> Миграции (cfg)
.
На сервере данная миграция появилась в /local/php_interface/migrations/
. Созданная миграция будет содержать описанный метод UP
, необходимо описать метод DOW
, который для этого случая будет выглядеть следуюшим образом:
public function down()
{
$helper = $this->getHelperManager();
$status = $helper->Iblock()->deleteIblockIfExists('php');
if ($status) {
$this->outSuccess('Информационный блок удален');
} else {
$this->outError('Информационный блок НЕ УДАЛЕН!!!');
}
}
Далее через гит переносим эту миграцию на требуемые сайты. На сайте, где необходимо развернуть миграцию, заходим в Настройки -> Миграции для разработчиков -> Миграции (cfg)
и видим нашу перенесенную миграцию:
Жмем кнопку Установить
и подтверждаем установку миграции в всплывающем окне:
В окне с логом видим результат:
- Создался тип инфоблока и сам инфоблок
- Все свойства перенеслись без ошибок
- Все настройки инфоблока перенеслись корректно
- Сама миграция заняла по времени не больше 5 минут