Download the PHP package mb4it/bitrix-migration without Composer

On this page you can find all versions of the php package mb4it/bitrix-migration. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package bitrix-migration

mb4it/bitrix-migration

Версионируемые миграции для 1С-Битрикс в стиле Laravel: класс миграции с up()/down(), таблица-леджер применённых версий, батчи, откат, статус. Плюс fluent-билдеры и экспортёры сущностей Битрикса (инфоблоки, HL-блоки, агенты, почта, опции, пользователи/группы, sitemap) для генерации миграций из живой БД. Namespace — MB\Bitrix\Database\Migrations\.

Самодостаточный пакет: зависит от ядра 1С-Битрикс и от mb4it/bitrix-console (движок + свои console-команды), но НЕ от mb4it/bitrix-support. Леджер MigrationVersionTable extends \Bitrix\Main\ORM\Data\DataManager; DI-обвязка (биндинги Migrator и пр.) и CLI-команды регистрируются через провайдер пакета, который консоль подхватывает автоматически (discovery по extra.mb-console.providers).

Требования

Установка

Пакет — path-репозиторий в composer.json потребителя (модуля/проекта):

Подключение — автоматическое: пакет объявляет свой console-провайдер в composer.json → extra.mb-console.providers, а mb4it/bitrix-console подхватывает его через Console\PackageManifest (читает vendor/composer/installed.json). Никакой ручной регистрации не нужно. mb4it/bitrix-support не требуется.

Быстрый старт

Сам движок — библиотека; CLI-команды даёт mb4it/bitrix-console. Обычно ставят консоль (миграции придут транзитивно) — и всё работает сразу, без настройки:

Появится самодостаточный бинарь vendor/bin/bx (далее — просто bx):

Нужно только программное использование, без CLI? Ставьте один движок:

и вызывайте app(\MB\Bitrix\Database\Migrations\Migrator::class) (см. «Программное использование»).

Что внутри

Класс Назначение
Migration Базовый абстрактный класс миграции: up() / down(), connection(), statement().
Migrator Движок: применение pending, откат батчей, fresh, статус. Поддерживает scope; ставит контекст миграции (имя + каталог) вокруг up()/down().
MigrationCreator Генератор timestamped-файла миграции из стаба (make:migration).
PathRegistry Реестр каталогов с миграциями (по умолчанию local/migrations).
Repository\{MigrationRepository, DatabaseMigrationRepository} Интерфейс + реализация леджера поверх ORM.
Entity\MigrationVersionTable DataManager, таблица mb_migration_version (леджер версий).
Entity\MigrationCreatedTable mb_migration_created — что миграция СОЗДАЛА (для не-разрушающего отката).
Entity\MigrationSnapshotTable mb_migration_snapshot — прежнее состояние обновлённых сущностей (для восстановления полей). PAYLOAD расширяется до LONGTEXT.
Support\CreationTracker Трекинг созданного + снимков; контекст текущей миграции/каталога.
Support\PortableFile Переносимые файлы: дескриптор {NAME,TYPE,DESCRIPTION} + байты (base64 CONTENT или sidecar PATH).
Support\{Blueprint, MigrationWriter, PhpPrinter, Resolver} Генерация файла миграции из экспортёра, печать PHP, переносимый резолв сущности.
Builders\*, Export\* Fluent-билдеры (apply/remove) и экспортёры живых сущностей → Blueprint.
Console\* console-команды пакета (migrate*, make:migration*) + провайдер.

Три таблицы (создаёт migrate:install, а также ленивое авто-создание):

Как написать миграцию

Файл миграции — обычный PHP-файл, который возвращает анонимный экземпляр Migration. Имя файла timestamped: 2026_07_07_120000_create_orders_table.php.

Внутри up()/down() доступны:

down() можно оставить пустым — тогда миграция необратима (rollback просто удалит запись из леджера).

Схему таблиц ORM-сущностей (Storage\Base) удобно накатывать прямо из миграции: MyEntityTable::migrate(\Bitrix\Main\Application::getConnection()).

Где лежат файлы

Модульные миграции изолированы в леджере через scope: имя хранится как <moduleId>:<файл>, поэтому проектные и модульные миграции не смешиваются и откатываются независимо. Пустой scope — проект.

Запуск (через mb4it/bitrix-console)

Любая команда принимает --format=json для машиночитаемого вывода (ИИ-агент).

migrate:install создаёт все три служебные таблицы (mb_migration_version, mb_migration_created, mb_migration_snapshot) — идемпотентно; они также создаются лениво при первом обращении.

Генерация миграций из живых сущностей

Экспортёры читают существующую сущность Битрикса и пишут файл миграции (up() воссоздаёт, down() откатывает). Команды и их опции — в README пакета mb4it/bitrix-console: make:migration:options, :iblock, :iblock-elements, :hlblock, :hlblock-elements, :agents, :mail, :user-groups, :users, :sitemap.

Выборочный экспорт инфоблока: --properties=CODE,… / --no-properties, --sections=ID|CODE|XML_ID,… / --no-sections, --with-elements.

Те же билдеры доступны и для ручного написания: \MB\Bitrix\Database\Migrations\Builders\OptionBuilder::make('main','x')->value('1')->apply();.

Переносимость между сайтами

Билдеры резолвят сущность по символьному ключу (CODE / XML_ID); записанный первичный ID используется лишь как фолбэк для сущностей без ключа. Поэтому миграция, перенесённая на другой сайт (где тот же ID занят несвязанной сущностью), не перезапишет чужую запись: она найдёт цель по ключу либо создаст новую.

Не-разрушающий откат и восстановление полей

down() не удаляет вслепую. Для каждой затронутой сущности:

Покрыты: инфоблоки (поля + привязка к сайтам), свойства (поля + список значений enum + LINK_IBLOCK), разделы, элементы (поля + значения свойств). Вне контекста миграции (ручной вызов билдера) remove() работает как раньше — удаляет.

Перенос файлов

Картинки элементов (PREVIEW_PICTURE / DETAIL_PICTURE) и файловые свойства (тип F, одиночные и множественные) переносятся как самодостаточные файлы: MigrationWriter выносит их в sidecar-папку files/<миграция>/, а в .php остаётся ссылка PATH. При apply() файл заливается заново (новый b_file), при откате — восстанавливается из снимка. Списочные значения переносятся по enum-id; пустые — очищают свойство.

Важно: миграция теперь — это .php плюс папка files/<миграция>/. Переносите и коммитьте их вместе. Экспорт файла возможен только там, где физический файл существует; иначе файл просто пропускается.

Программное использование

Migrator разрешается из контейнера. При наличии mb4it/bitrix-support доступен глобальный хелпер app(); в standalone-режиме резолвьте через контейнер консоли или соберите объект напрямую.

API Migrator

Метод Описание
run(?array $paths = null, string $scope = ''): array Применить все pending в scope одним батчем. Возвращает имена.
rollback(int $steps = 1, ?array $paths = null, string $scope = ''): array Откатить N последних батчей scope.
reset(?array $paths = null, string $scope = ''): array Откатить всё в scope.
status(?array $paths = null, string $scope = ''): array [{migration, ran, batch}].
getMigrationFiles(array $paths): array basename => путь, отсортировано.

Биндинги контейнера

Ключ Класс
migrator / Migrator::class Migrator (singleton)
migration.repository / MigrationRepository::class DatabaseMigrationRepository
migration.creator / MigrationCreator::class MigrationCreator (singleton)
PathRegistry::class PathRegistry (singleton, seed = local/migrations)

Кастомный путь по умолчанию

PathRegistry по умолчанию засеян local/migrations. Чтобы добавить свои каталоги (например, для авто-подхвата), переопределите singleton в своём ServiceProvider:


All versions of bitrix-migration with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
mb4it/bitrix-console Version ^0.1
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package mb4it/bitrix-migration contains the following files

Loading the files please wait ...