dbschemix/migrator — инструмент для управления изменениями схемы и данных базы данных.
Вы описываете миграции обычными SQL-файлами, а Migrator следит за тем, какие из них уже применены, и выполняет только новые.
Библиотека не зависит от фреймворка и подключается в любой PHP-проект через Composer.
Проблема, которую решает инструмент: разные окружения — разработка, тестирование, прод — должны содержать одинаковую схему.
Документация: https://dbschemix.github.io/
Миграции пишутся на SQL — без DSL, без Active Record, без Query Builder. Файл содержит обычный SQL для целевой СУБД, и именно этот SQL выполняется в базе данных. Нет промежуточного слоя, который мог бы сгенерировать не то, что вы написали.
Migrator не требует Laravel, Symfony, Yii или любого другого фреймворка.
Он подключается в любой PHP-проект, где есть Composer. Если проект уже использует встроенные миграции фреймворка,
dbschemix может работать рядом с ними — для отдельной базы или для баз данных, которые фреймворк не охватывает.
Миграции, применённые одним прогоном migrate:up, получают общий номер версии. Этот номер отображается в выводе как vers: <число>.
Откатить всю партию можно одной командой migrate:down --latest-version — без необходимости анализировать историю вручную.
Фикстуры — это SQL-файлы с тестовыми или начальными данными. Они хранятся в отдельном каталоге (<db-name>-fixture)
и применяются командой migrate:fixture, а не migrate:up. Повторяемые миграции хранятся в каталоге <db-name>-repeatable
и выполняются заново при каждом изменении содержимого файла — удобно для views, функций и других объектов, которые нужно пересоздавать.
Из коробки доступны PostgreSQL, MySQL и SQLite через пакет dbschemix/pdo.
Если вам нужна другая СУБД или нестандартный способ подключения, реализуйте интерфейс DriverInterface
и передайте свой драйвер в конструктор Migration. Подробнее — в разделе Конфигурация.
dbschemix подходит для проектов, где SQL — основной язык работы с базой данных. Если команда уже привыкла писать и ревьюить SQL-файлы, инструмент органично встраивается в существующий процесс.
Инструмент не подходит, если вам нужен генератор миграций на основе ORM-моделей. dbschemix не анализирует структуру ваших классов и не создаёт SQL автоматически — только выполняет то, что вы написали вручную.