Для чего это нужно: Синхронизация бд между копиями разработчиков, продакшеном, и всеми другими копиями.
Все изменения бд пишутся в файлы миграций, эти файлы, как и весь код проекта хранятся в системе контроля версий (например git) и попадают в копии разработчиков, после чего им необходимо выполнить накат новых миграций, чтобы актуализировать бд.
После установки модуля должна появиться директория /local/php_interface/migrations или /bitrix/php_interface/migrations - куда будут складываться миграции.
Создаем скрипт для запуска миграций через консоль
migrate.php
его содержимое:
#!/usr/bin/env php <?php $_SERVER["DOCUMENT_ROOT"] = __DIR__ . '/. ./htdocs/'; require($_SERVER["DOCUMENT_ROOT"]."local/modules/sprint.migration/tools/migrate.php"); |
Доступные команды
-------------------------
create <description> - создать файл с пустой миграцией
status - суммарная статистика по миграциям
list - список миграций
migrate --up --down - накатить, откатить все миграции, по умолчанию --up
up <limit> - накатить несколько миграций, по умолчанию 1
down <limit> - откатить несколько миграций, по умолчанию 1
execute <version> --up --down - накатить или откатить миграцию, по умолчанию --up
redo <version> - откатить+накатить миграцию
Полный список команд
Пример вызова команд
-------------------------
php migrate.php migrate
php migrate.php execute Version20150119122646 --down
php migrate.php up 3
Пример файла миграции:
-------------------------
/bitrix/php_interface/migrations/Version20140806034146.php
<?php namespace Sprint\Migration; class Version20140806034146 extends Version { protected $description = ""; public function up(){ // } public function down(){ // } } |
в нем необходимо реализовать 2 метода up и down - которые запускаются при установке и откате миграции,
например создание инфоблоков или какое либо другое изменение, которое должны получить все копии проекта.
Также в админке будет доступна страница /bitrix/admin/sprint_migrations.php?lang=ru которая представляет веб-интерфейс к миграциям, через него можно посмотреть список всех миграцией, установленных(зеленые) и нет(красные), можно создать миграцию и установить новые.