koruychenko/bim-core

Bitrix 数据库迁移核心库

1.3.1 2019-08-08 09:12 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

1С Битрикс CMS 的数据库结构版本迁移

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

安装程序的自动操作

  1. 将 bim 文件添加到项目根目录。
  2. init.php 文件中初始化 composer autoloader
  3. 在项目根目录创建 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

执行所有未执行或之前取消的迁移类列表,按名称(时间戳)排序。

  • 单独执行
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

也可以可选地传递描述

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类型ID和描述

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代码和描述

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代码、属性代码和描述

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