beta / bx.data.provider
Bitrix 数据提供者
1.20.1
2024-08-14 16:27 UTC
Requires
- php: >=7.2
- ext-dom: *
- ext-json: *
- ext-pdo: *
- ext-simplexml: *
- beta/data.provider: ^1.0
- symfony/console: ^6.0
Requires (Dev)
- fakerphp/faker: ^1.19
- nette/php-generator: ^3.6
- squizlabs/php_codesniffer: ^3.6
- vimeo/psalm: ^4.22
- dev-master
- 1.20.1
- 1.20.0
- 1.19.0
- 1.18.3
- 1.18.2
- 1.18.1
- 1.18.0
- 1.17.2
- 1.17.1
- 1.17.0
- 1.16.0
- 1.15.0
- 1.14.4
- 1.14.3
- 1.14.2
- 1.14.1
- 1.14.0
- 1.13.0
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.0
- 1.7.10
- 1.7.9
- 1.7.8
- 1.7.7
- 1.7.6
- 1.7.5
- 1.7.4
- 1.7.3
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-09-14 16:50:24 UTC
README
扩展 beta/data.provider 库用于 Bitrix。该模块包括以下提供者实现
- IblockDataProvider - 用于处理信息块数据的提供者
- SectionIblockDataProvider - 用于处理信息块部分数据的提供者
- HlBlockDataProvider - 用于处理 hl 块数据的提供者
- DataManagerDataProvider - 用于处理 Bitrix 任意数据管理器的提供者(DataManager 类的子类)
- BxConnectionDataProvider - 用于通过 Bitrix 连接处理数据的提供者,需要指定查询构造器和连接名称
- UserDataProvider - 用于处理 Bitrix 用户的提供者
示例:将信息块数据导出到 json 文件
use BX\Data\Provider\IblockDataProvider; use Data\Provider\Providers\JsonDataProvider; use Data\Provider\DefaultDataMigrator; use Data\Provider\QueryCriteria; use Data\Provider\Interfaces\QueryCriteriaInterface; use Data\Provider\Interfaces\CompareRuleInterface; $newsProvider = new IblockDataProvider( 'content', // передаем тип инфоблока 'news' // передаем символьный код инфоблока ); $newsProvider->setMapperForRead(function (array $data): array { // задаем маппер данных при запросе данных от провайдера return [ 'id' => (int)$data['ID'], 'name' => $data['NAME'], 'code' => $data['CODE'], 'content' => $data['DETAIL_TEXT'], ]; }); $targetJsonProvider = new JsonDataProvider( $_SERVER['DOCUMENT_ROOT'].'/upload/news.json', // указываем путь к файлу для сохранения 'id' // указываем имя первичного ключа ); $migrator = new DefaultDataMigrator( // создаем объект для обмена данными $newsProvider, // источник данных $targetJsonProvider // приемник данных ); $queryNews = new QueryCriteria(); $queryNews->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y'); // сохранять в json файл будем только активные элементы $exportResult = $migrator->runUpdate( $queryNews, // передаем фильтр для источника данных 'ID' // здесь указываем либо ключ для сопоставления данных с первичным ключом приемника данных или же анонимную функцию вида function(array $dataItem): QueryCriteriaInterface ); $exportResult->hasErrors(); // есть ли ошибки $exportResult->getErrors(); // список ошибок $exportResult->getSourceData(); // данные для экспорта полученные от источника $exportResult->getUnimportedDataList(); // данные которые не удалось сохранить в json файл
BxQueryAdapter - Bitrix 查询参数适配器,使用示例
use BX\Data\Provider\BxQueryAdapter; use Data\Provider\QueryCriteria; use Data\Provider\Providers\JsonDataProvider; use Data\Provider\Interfaces\CompareRuleInterface; $bxParams = [ 'select' => ['NAME', 'CODE', 'ID'], 'filter' => [ '=ACTIVE' => 'Y', [ 'LOGIC' => 'OR', [ '=NAME' => 'test', ], [ '=NAME' => 'other', ], ], ], 'limit' => 10, ]; $bxQuery = BxQueryAdapter::initFromArray($bxParams); $jsonProvider = new JsonDataProvider( $_SERVER['DOCUMENT_ROOT'].'/users.json', // указываем путь к json файлу 'id' // указываем первичный ключ ); $jsonProvider->getData($bxQuery->getQuery()); // данные из json файла $newQuery = new QueryCriteria(); $newQuery->setSelect(['NAME', 'CODE', 'ID']); $newQuery->setLimit(10); $compareRule = $newQuery->addCriteria('ACTIVE', CompareRuleInterface::EQUAL, 'Y'); $compareRule->and('NAME', CompareRuleInterface::EQUAL, 'test') ->or('NAME', CompareRuleInterface::EQUAL, 'other'); $newBxQuery = BxQueryAdapter::init($newQuery); $newBxQuery->toArray(); // результат будет аналогичен $bxParams
CLI
模块安装后,在项目根目录下将添加可执行文件 dpcli(如果项目之前未安装 beta/bx.cli 模块,则命令将被添加到公共可执行文件 bxcli 中)。
此接口提供生成执行导入、导出和生成数据的命令。这些文件是模板,即生成的文件代码需要根据需求进行编辑。
创建导出任务的命令
- ./dpcli dp:hlexport [hl 块代码] [数据导出文件路径.json|csv|xml] - 导出指定 hl 块的数据,支持 json、csv 和 xml 格式
- ./dpcli dp:iblockexport [信息块类型] [信息块代码] [数据导出文件路径.json|csv|xml] - 导出指定信息块元素,支持 json、csv 和 xml 格式
- ./dpcli dp:sectionexport [信息块类型] [信息块代码] [数据导出文件路径.json|csv|xml] - 导出指定信息块部分,支持 json、csv 和 xml 格式
- ./dpcli dp:tableexport [表名] [数据导出文件路径.json|csv|xml] - 从指定表导出记录,支持 json、csv 和 xml 格式
- ./dpcli dp:userexport [数据导出文件路径.json|csv|xml] - 导出 Bitrix 用户,支持 json、csv 和 xml 格式
创建导入任务的命令
- ./dpcli dp:hlimport [hl 块代码] [数据导入文件路径.json|csv|xml] - 从指定文件导入数据到指定 hl 块,支持 json、csv 和 xml 格式
- ./dpcli dp:iblockimport [信息块类型] [信息块代码] [数据导入文件路径.json|csv|xml] - 从指定文件导入元素到指定信息块,支持 json、csv 和 xml 格式
- ./dpcli dp:sectionimport [信息块类型] [信息块代码] [数据导入文件路径.json|csv|xml] - 从指定文件导入部分到指定信息块,支持 json、csv 和 xml 格式
- ./dpcli dp:tableimport [表名] [数据导入文件路径.json|csv|xml] - 将记录导入指定表,支持 json、csv 和 xml 格式
- ./dpcli dp:userimport [hl 块代码] [数据导入文件路径.json|csv|xml] - 从指定文件导入用户,支持 json、csv 和 xml 格式
创建生成数据任务的命令(项目中必须安装 dev 依赖 fzaninotto/faker)
- ./dpcli dp:hlgen [hl 块代码] [生成的记录数量] - 为指定 hl 块生成数据
- ./dpcli dp:iblockgen [信息块类型] [信息块代码] [生成的记录数量] - 为指定信息块生成元素
- ./dpcli dp:sectiongen [信息块类型] [信息块代码] [生成的记录数量] - 为指定信息块生成分区
- ./dpcli dp:tablegen [表名] [生成的记录数量] - 为指定表生成记录
- ./dpcli dp:usergen [生成的记录数量] - 生成用户
所有任务文件都保存在目录 local/dp/tasks 中。可以使用类似以下命令启动任务:
./dpcli dp:run --type=export -c UserGen -v --new
其中
- --type=export - 可选参数,指定要执行的任务类型,可以接受值:export、import 和 generate,如果未指定参数,则执行所有类型任务
- -c UserGen - 可选参数,执行的任务类名,此参数允许执行特定任务
- -v 或 --verbose - 可选参数,详细输出任务结果
- --new - 可选参数,如果指定,则只执行新任务(在当前环境中之前未执行的任务)