rulybka/bitrix-migrations

Bitrix CMS 的数据库迁移

2.8.4 2023-01-27 08:28 UTC

README

仅适用于 Bitrix 和其他数据库的迁移

安装

  1. composer require rulybka/bitrix-migrations

  2. cp vendor/rulybka/bitrix-migrations/migrator migrator - 将可执行文件复制到合适的位置。

  3. 进入并确保设置了正确的一 $_SERVER['DOCUMENT_ROOT']。如有需要,请更改设置。

  4. php migrator install

此命令将在数据库中创建一个表来存储已执行迁移的名称。

默认情况下

  1. 表名为 migrations。

  2. composer.jsonmigrator 位于网站根目录。

  3. 迁移文件将创建在 ./migrations 目录中,相对于在第 2 步复制的文件。

如有需要,可以在复制的 migrator 文件中更改这些设置。

  • 强烈建议通过 web 服务器通过 http 使 migrator./migrations 不可访问。 *

使用方法

工作流程

工作流程通过控制台进行,大致描述如下

  1. 使用 php migrator make 名称_迁移 创建迁移文件(或多个文件)

迁移文件是一个包含两个方法 up()down() 的类

  1. up() 方法中实现数据库中的必要更改。如果需要,在 down() 方法中实现这些更改的回滚

  2. 应用现有迁移 - php migrator migrate

  3. 将迁移文件添加到版本控制系统,以便在其他机器上运行

可用命令

可以在控制台中获取可用命令列表 - php migrator list

迁移模板

在生成迁移文件时,可以指定其模板:php migrator make 名称_迁移 -t add_iblock 其中 add_block - 模板名称。此时将生成一个包含模板样板类的类,只需指定详细信息(例如名称和代码块)即可。可以直接在 migrator 文件中通过 TemplateCollection::registerTemplate() 添加自己的迁移模板。

现有模板

  1. php migrator status - 显示可执行的迁移以及最后执行的迁移。

自动创建迁移

要启用此功能,请在 init.php 中添加以下内容

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

Manager::init() 方法中传递到类似配置的目录路径。

之后,在执行一系列后台操作时将发生以下情况

  1. 触发 Bitrix 事件处理器

  2. 创建迁移文件,类似于 php migrator make

  3. 迁移被标记为已应用

  4. 显示有关前面步骤的通知

启用此模式可以消除许多情况下手动编写迁移的需求。在自动创建的迁移中不需要进行任何更改。

处理事件列表

  • 迁移使用 OnBefore... 事件。如果您的更改发生错误(例如,添加信息块时未指定站点绑定),并且显示有关创建迁移的通知,则需要手动使用 php migrator rollback --hard --delete 回滚此类迁移。 *

迁移错误处理

在执行迁移时抛出异常即可取消迁移 - php throw new MigrationException('这里错误文本'); 此时迁移和后续迁移都不会应用。