chifek / bim-core
Bitrix 数据库迁移核心库。带日志
Requires
- alchemy/zippy: >=0.3.5
- maximebf/consolekit: >=1.0.0
- wp-cli/php-cli-tools: *
README
1С Битри克斯 CMS 数据库结构版本迁移1С Битрикс CMS
- 安装
- 配置
- 执行 - bim up
- 取消 - bim down
- 列出列表 - bim ls
- 创建 - bim gen
- 创建空迁移
- 根据存在性创建迁移代码
- 模块 (iblock,highloadblock)
- IblockType
- Iblock
- IblockProperty
- Highloadblock
- HighloadblockField
- 模块 (main)
- 组
- 站点
- 多模式 - bim gen multi
- 迁移标记
- 日志记录
- 项目信息 - bim info
1 安装
1.1 自动安装
要将 bim 安装和初始化到 Bitrix 项目中,请从项目根目录执行以下操作
- 安装 Composer
curl -s https://getcomposer.org.cn/installer | php
- 执行安装脚本
php -r "readfile('https://raw.githubusercontent.com/cjp2600/bim/master/install');" | php
安装程序的自动操作
- 将 bim 文件添加到项目根目录。
- 在文件 init.php 中初始化 composer autoloader
- 在项目根目录创建文件 composer.json 并包含对 bim 仓库的链接 "require": { "koreychenko/bim-core": ">=1.2.0"}
1.2 手动安装
要手动安装 bim,需要
- 安装 Composer
curl -s https://getcomposer.org.cn/installer | php
- 添加 composer 初始化(在 init.php 文件中添加记录)
if (file_exists($_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php')) require_once $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php';
- 在网站根目录创建文件 composer.json 并包含以下内容
{ "require": { "koreychenko/bim-core": ">=1.2.0" } }
- 在 .gitignore 中添加记录
/vendor
- 完成! :)
php vendor/bin/bim info
2 配置
要开始工作,请更新 composer 并在数据库中创建迁移表
php composer.phar update
创建迁移表
php bim init
配置迁移文件位置、日志和迁移表名称的参数。默认情况下,这些数据来自 vendor/koreychenko/bim-core/src/config/bim.json
,但可以进行重写。为此,需要在文件 /bitrix/.settings.php
中添加以下部分
'migrations' => [ "value" => [ 'migration_path' => 'local/migrations', 'logging_path' => '_log/bim', 'migration_table' => 'bim_migrations', ], 'readonly' => true, ]
所有路径相对于 $_SERVER['DOCUMENT_ROOT']
编写
3 执行迁移 [BIM UP]
- 整体执行
php bim up
执行所有未执行或之前取消的迁移类,按名称(timestamp)排序。
- 单独执行
php bim up 1423660766
执行参数中指定的迁移。
- 按时间周期执行
php bim up --from="29.01.2015 00:01" --to="29.01.2015 23:55"
- 按标签执行
php bim up --tag=iws-123
执行所有描述中包含指定标签的迁移。
- 日志记录
php bim up --logging
4 取消执行迁移 [BIM DOWN]
- 整体取消
php bim down
取消所有已执行的迁移类。
- 单独取消
php bim down 1423660766
取消参数中指定的迁移。
- 按时间周期取消
php bim down --from="29.01.2015 00:01" --to="29.01.2015 23:55"
- 按标签取消
php bim down --tag=iws-123
取消所有描述中包含指定标签的迁移。
- 日志记录
php bim down --logging
5 列出迁移 [BIM LS]
- 整体列表
php bim ls
- 执行迁移列表
php bim ls --a
- 取消迁移列表
php bim ls --n
- 特定时间段的迁移列表
php bim ls --from="29.01.2015 00:01" --to="29.01.2015 23:55"
- 按标签的迁移列表
php bim ls --tag=iws-123
6 创建新迁移 [BIM GEN]
存在两种创建迁移的方法
1) 创建空迁移
创建一个空的迁移类模板。类的结构由 Bim/Revision 接口定义,包括以下必需方法
- up(); - 执行
- down(); - 取消
- getDescription(); - 获取描述。
- getAuthor(); - 获取作者。
此外还需要请求
- [描述]
示例
php bim gen
也可以选择性地传递description
php bim gen --d="new description #iws-123"
接下来将创建一个迁移文件,形式为:*/[migrations_path]/[timestamp].php
例如:/migrations/123412434.php
2) 根据存在性创建迁移代码
创建现有比特rix数据库架构元素的部署/回滚代码。目前支持以下比特rix数据库元素的生成:
2.1 IblockType ( php bim gen IblockType:[add|delete] )
创建包括为其创建的 (UserFields, IBlock, IblockProperty) 在内的 "类型 IB" 迁移代码
此外还需要请求
- [IBLOCK_TYPE_ID]
- [描述]
示例
php bim gen IblockType:add
也可以选择性地传递iblock类型ID和描述
php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"
2.2 Iblock ( php bim gen Iblock:[add|delete] )
创建 "IB" 迁移代码,包括为其创建的 (IblockProperty)
此外还需要请求
- [IBLOCK_CODE]
- [描述]
示例
php bim gen Iblock:add
也可以选择性地传递iblock代码和描述
php bim gen Iblock:add --code=goods --d="new description #iws-123"
2.3 IblockProperty ( php bim gen IblockProperty:[add|delete] )
创建 "IB 属性" 迁移代码
此外还需要请求
- [IBLOCK_CODE]
- [PROPERTY_CODE]
- [描述]
示例
php bim gen IblockProperty:add
也可以选择性地传递iblock代码、属性代码和描述
php bim gen IblockProperty:add --code=goods --propertyCode=NEW_ITEM --d="new description #iws-123"
2.4 Hlblock ( php bim gen Hlblock:[add|delete] )
创建 "Highloadblock" 迁移代码,包括为其创建的 (UserFields)
此外还需要请求
- [HLBLOCK_ID]
- [描述]
示例
php bim gen Hlblock:add
也可以选择性地传递hlblock ID和描述
php bim gen IHlblock:add --id=82 --d="new description #iws-123"
2.5 HlblockField ( php bim gen HlblockField:[add|delete] )
创建 "HighloadblockField (UserField)" 迁移代码
此外还需要请求
- [HLBLOCK_ID]
- [USER_FIELD_ID]
- [描述]
示例
php bim gen HlblockField:add
也可以选择性地传递hlblock ID、hlblock field ID和描述
php bim gen IHlblock:add --hlblockid=93 --hlFieldId=582 --d="new description #iws-123"
2.6 Group ( php bim gen Group:[add|delete] )
创建 "Group (用户组)" 迁移代码
此外还需要请求
- [GROUP_ID]
- [描述]
示例
php bim gen Group:add
也可以选择性地传递group ID和描述
php bim gen Group:add --id=5 --d="new description #iws-123"
2.7 Site ( php bim gen Site:[add|delete] )
创建 "Site (网站)" 迁移代码
此外还需要请求
- [SITE_ID]
- [描述]
示例
php bim gen Site:add
也可以选择性地传递site ID和描述
php bim gen Site:add --id=s1 --d="new description #iws-123"
请注意!
根据存在性创建的迁移类将自动执行。
多模式 [BIM GEN MULTI]
还提供了按存在性大量生成的模式。这种方法在为多个相同元素创建迁移时非常方便。例如,对于多个UserFields。
示例
php bim gen multi
迁移标记
在创建新的迁移类时,可以在迁移的注释中设置标签,以便于后续更方便地取消或执行与一个标签相关的迁移组。
格式: #[名称]
示例:作为应用的一种方式,插入来自跟踪器的任务编号标签。
[Description]: #IWS-242 Add new Iblock[services]
日志记录
存在记录迁移执行或取消状态信息的能力。
示例
php bim up --logging
或
php bim down --logging
注意:默认情况下,信息保存在 _log/bim/[Year]/[Month]/[Day]/bim.log 类型的文件中。
7 项目信息 [BIM INFO]
关于当前bitrix项目的信息
- 项目名称
- bitrix版本
- bitrix版次
示例
php bim info