karpenko-na-fork / bitrix-migrations
Bitrix CMS 数据库迁移
Requires
- php: >=5.5.0
- symfony/console: ~2|~3|~4
- tightenco/collect: 5.*
Requires (Dev)
- mockery/mockery: ~0.9
- phpunit/phpunit: ~4.0
README
Bitrix-migrations
Bitrix和其他数据库的迁移
安装
-
composer require arrilot/bitrix-migrations
-
cp vendor/arrilot/bitrix-migrations/migrator migrator
- 将可执行文件复制到方便的位置。 -
进入目录并确保设置了正确的 $_SERVER['DOCUMENT_ROOT']。如果需要,请更改设置
-
php migrator install
该命令将在数据库中创建一个用于存储已执行迁移名称的表。
默认情况下
-
表名为 migrations。
-
composer.json
和migrator
位于网站根目录。 -
迁移文件将创建在
./migrations
目录中,该目录相对于在步骤 2 中复制的文件。
如果需要,可以在复制的 migrator
文件中更改这些设置。
- 强烈建议通过 Web 服务器将
migrator
和./migrations
目录设置为 http 不可访问。*
使用方法
工作流程
工作流程通过控制台进行,简要描述如下
- 使用
php migrator make 名称_迁移
命令创建迁移文件(或多个文件)
迁移文件是一个包含两个方法 up()
和 down()
的类
-
在
up()
方法中实现对数据库的必要更改。如果需要,可以在down()
方法中实现撤销这些更改 -
应用现有迁移 -
php migrator migrate
-
将迁移文件添加到版本控制系统,以便在其他机器上运行
可用的命令
可以在控制台中获取可用的命令列表 - php migrator list
迁移模板
由于通过 Bitrix API 更改 Bitrix 数据库结构是一项非常繁琐的工作,因此有一个迁移模板机制来简化此过程:在生成迁移文件时,可以指定模板:例如 php migrator make 名称_迁移 -t add_iblock
其中 add_iblock
是模板名称。此时将生成一个包含模板样板类的类,然后只需指定详细信息(例如,信息块名称和代码)即可。可以通过 TemplateCollection::registerTemplate()
直接在 migrator
文件中添加自己的迁移模板。
现有模板
php migrator status
- 显示可执行的迁移以及最后执行的迁移。
自动创建迁移
另一个杀手特性是自动创建迁移的模式。要启用此模式,需要将以下内容添加到 init.php
Arrilot\BitrixMigrations\Autocreate\Manager::init($_SERVER["DOCUMENT_ROOT"].'/migrations');
在 Manager::init()
方法中传递与 migrator
文件中配置相同的目录路径。
之后,在执行一系列管理区操作时将发生以下情况
-
触发 Bitrix 事件处理器
-
创建迁移文件,就像执行
php migrator make
一样 -
迁移标记为已应用
-
显示关于前面步骤的通知
启用此模式可以消除手动编写许多情况下的迁移需求。不需要修改自动创建的迁移。
处理的事件列表
- 迁移使用
OnBefore...
事件。如果在您的更改中发生错误(例如,添加信息块时未指定网站绑定),并显示有关迁移已创建的通知,则需要手动使用php migrator rollback --hard --delete
命令撤消此类迁移。
处理迁移错误
在执行迁移时,要取消迁移,只需抛出异常 - php throw new MigrationException('错误文本在这里');
这样,既不会执行当前的迁移,也不会应用后续的迁移。
在Bitriks之外的系统使用
此包是为与Bitriks一起使用而创建的,但它也很容易在其他系统中使用。为此,需要在 migrator
文件中
-
将Bitriks的核心连接替换为其他系统的核心连接。
-
实现自己的类似
Arrilot\BitrixMigrations\Repositories\BitrixDatabaseRepository;
并使用它。 -
如有需要,可以禁用现有的迁移模板,创建自己的模板。