PHPackages                             enjame/bitrix-migrations - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. enjame/bitrix-migrations

ActiveLibrary[Database &amp; ORM](/categories/database)

enjame/bitrix-migrations
========================

Database migrations for Bitrix CMS

2.5.4(6y ago)0910MITPHPPHP &gt;=5.5.0

Since Oct 4Pushed 6y agoCompare

[ Source](https://github.com/enjame/bitrix-migrations)[ Packagist](https://packagist.org/packages/enjame/bitrix-migrations)[ Docs](https://github.com/Arrilot/bitrix-migrations)[ RSS](/packages/enjame-bitrix-migrations/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (4)Versions (25)Used By (0)

[![Latest Stable Version](https://camo.githubusercontent.com/7aea5a0685d67289bf3d826e0f5d9073116784528ef2e1eafafab50cede986ab/68747470733a2f2f706f7365722e707567782e6f72672f617272696c6f742f6269747269782d6d6967726174696f6e732f762f737461626c652e737667)](https://packagist.org/packages/arrilot/bitrix-migrations/)[![Total Downloads](https://camo.githubusercontent.com/e5bb30535a2798570de07c9574ea2907442fe8e08416abebb41f529180e58714/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f617272696c6f742f6269747269782d6d6967726174696f6e732e7376673f7374796c653d666c6174)](https://packagist.org/packages/Arrilot/bitrix-migrations)[![Build Status](https://camo.githubusercontent.com/38fb38c049ce9716ff05c94d2c7c489e5cb9c7b961e2f00390089e9fdb58c0c3/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f617272696c6f742f6269747269782d6d6967726174696f6e732f6d61737465722e7376673f7374796c653d666c6174)](https://travis-ci.org/arrilot/bitrix-migrations)[![Scrutinizer Quality Score](https://camo.githubusercontent.com/c732f7bc400ba92299e5c595bf2ecdc07d88f4bb18ad61eae3621ae4212c8b43/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f617272696c6f742f6269747269782d6d6967726174696f6e732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/arrilot/bitrix-migrations/)

Bitrix-migrations
=================

[](#bitrix-migrations)

*Миграции БД для Битрикса и не только*

Установка
---------

[](#установка)

1. `composer require enjame/bitrix-migrations`
2. `cp vendor/enjame/bitrix-migrations/migrator migrator` - копируем исполняемый файл в удобное место.
3. заходим внутрь и удостоверяемся что задается правильный $\_SERVER\['DOCUMENT\_ROOT'\]. Меняем настройки если нужно
4. `php migrator install`

Данная команда создаст в БД таблицу для хранения названий выполненных миграций.

По умолчанию:

1. Таблица называется migrations.
2. `composer.json` и `migrator` лежат в корне сайта.
3. Файлы миграций будут создаваться в директории `./migrations` относительно скопированного на этапе 2 файла.

При необходимости всё это можно изменить в скопированном файле `migrator`.

- Крайне рекомендуется сделать `migrator` и `./migrations` недоступными по http через веб-сервер. \*

Использование
-------------

[](#использование)

### Рабочий процесс

[](#рабочий-процесс)

Рабочий процесс происходит через консоль и кратко описывается примерно так:

1. Создаем файл (или файлы) миграции при помощи `php migrator make название_миграции`

Файл миграции представляет из себя класс с двумя методами `up()` и `down()`

2. Реализуем в методе `up()`необходимые изменения в БД. При желании в методе `down()` реализуем откат этих измнений
3. Применяем имеющиеся миграции - `php migrator migrate`
4. Вносим файлы миграций в систему контроля версий, чтобы их можно было запустить и на других машинах

### Доступные команды

[](#доступные-команды)

Список доступных команд можно получить в консоли - `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`6. `php migrator status` - показывает доступные для выполнения миграции, а также последние выполненные.

### Автоматическое создание миграций

[](#автоматическое-создание-миграций)

Еще одна киллер-фича - режим автоматического создания миграций. Для его включения необходимо добавить примерно следующее в `init.php`

```
Arrilot\BitrixMigrations\Autocreate\Manager::init($_SERVER["DOCUMENT_ROOT"].'/migrations');
```

В метод `Manager::init()` передается путь до директории аналогичной конфигу в файле `migrator`.

После этого при выполнении ряда действий в админке будет происходить следующее

1. Срабатывает битриксовый обработчик события
2. Создается файл миграции как при `php migrator make`
3. Миграция помечается примененной
4. Показывается нотификация о предыдущих пунктах

Включение данного режима позволяет избавиться от ручного написания миграций для многих случаев. Ничего в создаваемых автоматически миграциях править не требуется.

Список обрабатываемых событий:

СобытиеКомментарии Добавление инфоблока  Обновление базовых полей инфоблока Из-за специфики работы админки битрикса эта миграция зачастую создается когда не нужно, допустим при добавлении кастомного свойства в инфоблок. Ничего смертельного, но надо смириться. Удаление инфоблока  Добавление кастомного свойства в инфоблок  Обновление кастомного свойства инфоблока Миграция создается только если какой-либо из атрибутов свойства был изменён Удаление кастомного свойства инфоблока  Добавление UF свойства куда-либо (раздел ИБ, пользователь, хайлоадблок) К сожалению Битрикс не даёт возможности отслеживать изменение такого свойства - только добавление и удаление Удаление UF свойства  Добавление хайлоадблока  Изменение хайлоадблока Миграция создается только если какой-либо из атрибутов хайлоадблока был изменён Удаление хайлоадблока  Добавление группы пользователей  Изменение группы пользователей  Удаление группы пользователей - Миграции используют события `OnBefore...`. Если при вашем изменении произошла ошибка (допустим не указана привязка к сайту при добавлении инфоблока) и было показано уведомление о том что миграция создана, необходимо вручную откатить такую миграцию при помощи `php migrator rollback --hard --delete` \*

### Обработка ошибок миграций

[](#обработка-ошибок-миграций)

Для отмены миграции в момент её выполнения достаточно выкинуть исключение - `php throw new MigrationException('Тут текст ошибки');`Ни сама миграция, ни последующие при этом применены не будут.

Использование вне Битрикс
-------------------------

[](#использование-вне-битрикс)

Пакет создан для использования совместно с Битриксом, однако его довольно просто можно использовать и в других системах. Для этого нужно в файле `migrator`:

1. Заменить подключение ядра Битрикса на ядро другой системы.
2. Реализовать свой аналог ` Arrilot\BitrixMigrations\Repositories\BitrixDatabaseRepository;` и использовать его.
3. По желанию отключить существующие шаблоны миграций, сделав свои.

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~60 days

Recently: every ~67 days

Total

24

Last Release

2494d ago

Major Versions

1.0.2 → 2.0.02015-10-30

1.1.0 → 2.1.02016-06-04

PHP version history (2 changes)1.0.0PHP &gt;=5.4.0

2.2.0PHP &gt;=5.5.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/12049832?v=4)[Vladimir Studenikin](/maintainers/enjame)[@enjame](https://github.com/enjame)

---

Top Contributors

[![arrilot](https://avatars.githubusercontent.com/u/2826480?v=4)](https://github.com/arrilot "arrilot (11 commits)")[![MsNatali](https://avatars.githubusercontent.com/u/8089373?v=4)](https://github.com/MsNatali "MsNatali (4 commits)")[![svazist](https://avatars.githubusercontent.com/u/140612?v=4)](https://github.com/svazist "svazist (2 commits)")[![viktorprogger](https://avatars.githubusercontent.com/u/7670669?v=4)](https://github.com/viktorprogger "viktorprogger (2 commits)")[![vadileo](https://avatars.githubusercontent.com/u/51167100?v=4)](https://github.com/vadileo "vadileo (1 commits)")[![vkryukov76](https://avatars.githubusercontent.com/u/944188?v=4)](https://github.com/vkryukov76 "vkryukov76 (1 commits)")[![azatnizam](https://avatars.githubusercontent.com/u/18191907?v=4)](https://github.com/azatnizam "azatnizam (1 commits)")[![enjame](https://avatars.githubusercontent.com/u/12049832?v=4)](https://github.com/enjame "enjame (1 commits)")[![olegpro](https://avatars.githubusercontent.com/u/1092443?v=4)](https://github.com/olegpro "olegpro (1 commits)")

---

Tags

bitrixmigrations

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/enjame-bitrix-migrations/health.svg)

```
[![Health](https://phpackages.com/badges/enjame-bitrix-migrations/health.svg)](https://phpackages.com/packages/enjame-bitrix-migrations)
```

###  Alternatives

[robmorgan/phinx

Phinx makes it ridiculously easy to manage the database migrations for your PHP app.

4.5k46.2M405](/packages/robmorgan-phinx)[doctrine/migrations

PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.

4.8k204.8M440](/packages/doctrine-migrations)[doctrine/doctrine-migrations-bundle

Symfony DoctrineMigrationsBundle

4.3k177.9M537](/packages/doctrine-doctrine-migrations-bundle)[davedevelopment/phpmig

Simple migrations system for php

5782.3M17](/packages/davedevelopment-phpmig)[lulco/phoenix

Database Migrations for PHP

180329.4k4](/packages/lulco-phoenix)[masom/lhm

Large Hadron Migrator for phinx

309.3k](/packages/masom-lhm)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
