arrilot / bitrix-collectors
该软件包已被 废弃 并且不再维护。没有建议的替代软件包。
0.2.1
2017-03-29 11:10 UTC
Requires
- php: >=5.6.4
- arrilot/collectors: ^0.2
This package is auto-updated.
Last update: 2023-01-29 02:51:02 UTC
README
该软件包不再积极维护
原因是我们在自己的项目中不再使用 Bitrix。如果您对项目感兴趣并希望参与维护 - 分支并在此存储库中创建 Issue 以便我们在此处放置分支的链接。
用于集成 arrilot/collectors
与 Bitrix 的桥梁
安装
composer require arrilot/bitrix-collectors
使用
基础是 https://www.github.com/arrilot/collectors 该软件包允许从不同的集合和元素(通常是通过对 CIblockElement::GetList()
的调用获得)收集标识符,并以方便的方式通过单个查询获取附加数据,而不是像通常那样在循环中结束
该桥梁实现了在 Bitrix 中最需要的几个收集器(collectors)
预置收集器
Arrilot\BitrixCollectors\FileCollector
- 使用 d7 的 FileTable::getListArrilot\BitrixCollectors\SectionCollector
- SectionTable::getListArrilot\BitrixCollectors\ElementCollector
- CIBlockElement::GetList + Fetch. 建议使用 2.0 版本的信息块以避免多属性问题。Arrilot\BitrixCollectors\UserCollector
- UserTable::getList
抽象收集器类。在开发额外收集器时可以从中继承。
Arrilot\BitrixCollectors\TableCollector
- 用于数据存储在单独的表中且没有 d7 orm 类的情况。Arrilot\BitrixCollectors\OrmTableCollector
- 用于数据存储在单独的表中且存在 d7 orm 类的情况。
与原始软件包一样,方法链应以 performQuery()
方法结束,它执行 getList 查询到数据库并返回结果。可以同时收集多个集合/元素的标识符等。
示例
use Arrilot\BitrixCollectors\FileCollector; $items = [ ['ID' => 1, 'PROPERTY_FILES1_VALUE' => 1], ['ID' => 2, 'PROPERTY_FILES2_VALUE' => [2, 1]], ]; $item = ['ID' => 3, 'PROPERTY_OTHER_FILES_VALUE' => 4]; $collector = new FileCollector(); $files = $collector->scanCollection($items, ['PROPERTY_FILES1_VALUE', 'PROPERTY_FILES2_VALUE']) ->scanItem($item, 'PROPERTY_OTHER_FILES_VALUE') ->performQuery(); var_dump($files); // результат /* array:3 [▼ 1 => array:13 [▼ "ID" => "1" "TIMESTAMP_X" => "2017-02-10 17:25:17" "MODULE_ID" => "iblock" "HEIGHT" => "150" "WIDTH" => "140" "FILE_SIZE" => "15003" "CONTENT_TYPE" => "image/png" "SUBDIR" => "iblock/b03" "FILE_NAME" => "avatar.png" "ORIGINAL_NAME" => "avatar-gs.png" "DESCRIPTION" => "" "HANDLER_ID" => null "EXTERNAL_ID" => "125dc3213f7ecde31124f3ebca7322b5" ], 2 => array:13 [▼ "ID" => "2" "TIMESTAMP_X" => "2017-02-10 17:31:30" "MODULE_ID" => "iblock" "HEIGHT" => "84" "WIDTH" => "460" "FILE_SIZE" => "4564" "CONTENT_TYPE" => "image/png" "SUBDIR" => "iblock/fcf" "FILE_NAME" => "4881-03.png" "ORIGINAL_NAME" => "4881-03.png" "DESCRIPTION" => "" "HANDLER_ID" => null "EXTERNAL_ID" => "35906df62694b4ed5f150c468a1f5d72" ] 4 => array:13 [▼ "ID" => "4" "TIMESTAMP_X" => "2017-02-10 17:33:30" "MODULE_ID" => "iblock" "HEIGHT" => "84" "WIDTH" => "460" "FILE_SIZE" => "4564" "CONTENT_TYPE" => "image/png" "SUBDIR" => "iblock/fc2" "FILE_NAME" => "test.png" "ORIGINAL_NAME" => "4881-03.png" "DESCRIPTION" => "" "HANDLER_ID" => null "EXTERNAL_ID" => "35906df62694b4ed5f150c468a1f5d53" ] ] */
所有收集器都支持 ->select([...])
,其中可以指定传递给 Bitrix API 的 $select
数组。类似地,在 ->where(['...'])
中可以指定 $filter
。例外是 TableCollector
。在那里在 ->where()
中需要传递字符串而不是数组-过滤器。它将被插入 sql 查询而不进行额外处理。