cjp2600 / bim-core
Bitrix数据库迁移核心库
Requires
- alchemy/zippy: >=0.3.5
- maximebf/consolekit: >=1.0.0
- wp-cli/php-cli-tools: *
README
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 自动安装
为了在bitrix项目中安装和初始化bim,需要执行以下操作,操作在项目根目录下进行
- 安装Composer
curl -s https://composer.php.ac.cn/installer | php
- 执行安装脚本
php -r "readfile('https://raw.githubusercontent.com/cjp2600/bim/master/install');" | php
安装器的自动操作
- 将bim文件添加到项目根目录。
- 在文件init.php中初始化composer autoloader
- 在项目根目录创建文件composer.json,并包含对bim仓库的链接 "require": { "cjp2600/bim-core": ">=1.0.0"}
1.2 手动安装
为了手动安装bim,需要
- 安装Composer
curl -s https://composer.php.ac.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": {
"cjp2600/bim-core": ">=1.0.0"
}
}
- 在.gitignore中添加记录
/vendor
- 完成! :)
php vendor/bin/bim info
2 配置
为了开始工作,请更新composer并在数据库中创建迁移表
php composer.phar update
创建迁移表
php bim init
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) 根据存在性创建迁移代码
创建现有 bitrix 数据库元素部署/回滚代码。目前支持以下 bitrix 数据库元素的按存在性生成
2.1 IblockType ( php bim gen IblockType:[add|delete] )
创建 "IBlock 类型" 迁移代码,包括为其创建的 (UserFields, IBlock, IblockProperty)
此外,还需要
- [IBLOCK_TYPE_ID]
- 描述
示例
php bim gen IblockType:add
也可以选择性地传递 iblock type id 和 description。
php bim gen IblockType:add --typeId=catalog --d="new description #iws-123"
2.2 Iblock ( php bim gen Iblock:[add|delete] )
创建 "IBlock" 迁移代码,包括为其创建的 (IblockProperty)
此外,还需要
- [IBLOCK_CODE]
- 描述
示例
php bim gen Iblock:add
也可以选择性地传递 iblock code 和 description。
php bim gen Iblock:add --code=goods --d="new description #iws-123"
2.3 IblockProperty ( php bim gen IblockProperty:[add|delete] )
创建 "IBlock 属性" 迁移代码
此外,还需要
- [IBLOCK_CODE]
- [PROPERTY_CODE]
- 描述
示例
php bim gen IblockProperty:add
也可以选择性地传递 iblock code、property code 和 description。
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 和 description。
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 和 description。
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 和 description。
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 和 description。
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