rulybka/bitrix-migrations
Composer 安装命令:
composer require rulybka/bitrix-migrations
包简介
Database migrations for Bitrix CMS
关键字:
README 文档
README
Миграции БД для Битрикса и не только
Установка
-
composer require rulybka/bitrix-migrations -
cp vendor/rulybka/bitrix-migrations/migrator migrator- копируем исполняемый файл в удобное место. -
заходим внутрь и удостоверяемся что задается правильный $_SERVER['DOCUMENT_ROOT']. Меняем настройки если нужно.
-
php migrator install
Данная команда создаст в БД таблицу для хранения названий выполненных миграций.
По умолчанию:
-
Таблица называется migrations.
-
composer.jsonиmigratorлежат в корне сайта. -
Файлы миграций будут создаваться в директории
./migrationsотносительно скопированного на этапе 2 файла.
При необходимости всё это можно изменить в скопированном файле migrator.
- Крайне рекомендуется сделать
migratorи./migrationsнедоступными по http через веб-сервер. *
Использование
Рабочий процесс
Рабочий процесс происходит через консоль и кратко описывается примерно так:
- Создаем файл (или файлы) миграции при помощи
php migrator make название_миграции
Файл миграции представляет из себя класс с двумя методами up() и down()
-
Реализуем в методе
up()необходимые изменения в БД. При желании в методеdown()реализуем откат этих изменений -
Применяем имеющиеся миграции -
php migrator migrate -
Вносим файлы миграций в систему контроля версий, чтобы их можно было запустить и на других машинах
Доступные команды
Список доступных команд можно получить в консоли - php migrator list
| Название | Описание |
|---|---|
| php migrator install | Создает таблицу для хранения миграций. Запускается один раз. |
| php migrator make название_миграции |
Создает файл миграции
Опции: `-d foo/bar` - указать поддиректорию, в которой будет создана миграция |
| php migrator migrate | Применяет все доступные для применения миграции. Миграции примененные ранее не применяются. |
| php migrator rollback |
Откатывает последнюю миграцию (метод `down()`). После этого её можно применить повторно. Опции: `--hard` - выполнить жесткий откат без вызова метода `down()` `--delete` - удалить файл с миграцией после отката. |
| php migrator templates | Показывает подробную таблицу со всем существующими шаблонами миграций |
| php migrator status | Показывает доступные для выполнения миграции, а также последние выполненные. |
| php migrator archive |
Переносит все миграции в архив. По умолчанию это директория archive, но можно переопределить в конфиге, указав "dir_archive" Опции: `-w 10` - не переносить в архив последние N миграций |
Шаблоны миграций
При генерации файла миграции можно указать его шаблон: php migrator make название_миграции -t add_iblock где add_block - название шаблона.
При этом сгенерируется класс с бойлерплейтом из шаблона и остается лишь указать детали (например название и код инфоблока)
Свои шаблоны миграций можно добавить напрямую в файле migrator при помощи TemplateCollection::registerTemplate()
Имеющиеся шаблоны:
| Название | Описание | Алиасы |
|---|---|---|
| `default` | Чистый шаблон по умолчанию | |
| `add_iblock_type` | Добавление типа инфоблока | |
| `add_iblock` | Добавление инфоблока | |
| `add_iblock_element_property` | Добавление свойства в инфоблок | `add_iblock_prop`, `add_iblock_element_prop`, `add_element_prop`, `add_element_property` |
| `add_uf` | Добавление UF свойства | |
| `query` | Произвольный запрос в БД через АПИ d7 | |
| `add_table` | Создание таблицы через АПИ d7 | `create_table` |
| `delete_table` | Удаление таблицы через АПИ d7 | `drop_table` |
| `element_add` | Добавление элемента в раздел инфоблока | |
| `section_add` | Добавление раздела в инфоблок инфоблока | |
| `hlb_element_add` | Добавление элемента в сущность хайлоада | |
| `event_add` | Добавление почтового события | |
| `event_msg_add` | Добавление шаблона почтового события | |
| `group_add` | Создание группы пользователей |
php migrator status- показывает доступные для выполнения миграции, а также последние выполненные.
Автоматическое создание миграций
Для его включения необходимо добавить примерно следующее в init.php
Arrilot\BitrixMigrations\Autocreate\Manager::init($_SERVER["DOCUMENT_ROOT"].'/migrations');
В метод Manager::init() передается путь до директории аналогичной конфигу в файле migrator.
После этого при выполнении ряда действий в админке будет происходить следующее
-
Срабатывает битриксовый обработчик события
-
Создается файл миграции как при
php migrator make -
Миграция помечается примененной
-
Показывается нотификация о предыдущих пунктах
Включение данного режима позволяет избавиться от ручного написания миграций для многих случаев. Ничего в создаваемых автоматически миграциях править не требуется.
Список обрабатываемых событий:
| Событие | Комментарии |
|---|---|
| Добавление инфоблока | |
| Обновление базовых полей инфоблока | Из-за специфики работы админки битрикса эта миграция зачастую создается когда не нужно, допустим при добавлении кастомного свойства в инфоблок. Ничего смертельного, но надо смириться. |
| Удаление инфоблока | |
| Добавление кастомного свойства в инфоблок | |
| Обновление кастомного свойства инфоблока | Миграция создается только если какой-либо из атрибутов свойства был изменён |
| Удаление кастомного свойства инфоблока | |
| Добавление UF свойства куда-либо (раздел ИБ, пользователь, хайлоадблок) | К сожалению Битрикс не даёт возможности отслеживать изменение такого свойства - только добавление и удаление |
| Удаление UF свойства | |
| Добавление хайлоадблока | |
| Изменение хайлоадблока | Миграция создается только если какой-либо из атрибутов хайлоадблока был изменён |
| Удаление хайлоадблока | |
| Добавление группы пользователей | |
| Изменение группы пользователей | |
| Удаление группы пользователей |
- Миграции используют события
OnBefore.... Если при вашем изменении произошла ошибка (допустим не указана привязка к сайту при добавлении инфоблока) и было показано уведомление о том что миграция создана, необходимо вручную откатить такую миграцию при помощиphp migrator rollback --hard --delete*
Обработка ошибок миграций
Для отмены миграции в момент её выполнения достаточно выкинуть исключение - php throw new MigrationException('Тут текст ошибки');
Ни сама миграция, ни последующие при этом применены не будут.
rulybka/bitrix-migrations 适用场景与选型建议
rulybka/bitrix-migrations 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.5k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2021 年 07 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「migrations」 「bitrix」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 rulybka/bitrix-migrations 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 rulybka/bitrix-migrations 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 rulybka/bitrix-migrations 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Symfony ClickhouseMigrationsBundle
Very simple SQL-based database migrations tool - a heavily stripped down fork of robmorgan/phinx
Laravel table comments loader (part of Diplodocker project)
A lightweight, secure-by-default PHP microframework built on Slim – providing Laravel-like features (ORM, authentication, migrations, caching) without the bloat. Perfect for building REST APIs and small-to-medium PHP applications.
Bitrix db migration core libs
统计信息
- 总下载量: 1.5k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 10
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-07-25