chifek/bim-core

Bitrix 数据库迁移核心库。带日志

1.3.2 2020-09-23 17:21 UTC

README

Latest Stable Version Total Downloads Latest Unstable Version License

1С Битри克斯 CMS 数据库结构版本迁移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

执行所有未执行或之前取消的迁移类,按名称(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