arrilot/bitrix-collectors

该软件包已被 废弃 并且不再维护。没有建议的替代软件包。

0.2.1 2017-03-29 11:10 UTC

This package is auto-updated.

Last update: 2023-01-29 02:51:02 UTC


README

Latest Stable Version

该软件包不再积极维护

原因是我们在自己的项目中不再使用 Bitrix。如果您对项目感兴趣并希望参与维护 - 分支并在此存储库中创建 Issue 以便我们在此处放置分支的链接。

用于集成 arrilot/collectors 与 Bitrix 的桥梁

安装

composer require arrilot/bitrix-collectors

使用

基础是 https://www.github.com/arrilot/collectors 该软件包允许从不同的集合和元素(通常是通过对 CIblockElement::GetList() 的调用获得)收集标识符,并以方便的方式通过单个查询获取附加数据,而不是像通常那样在循环中结束

该桥梁实现了在 Bitrix 中最需要的几个收集器(collectors)

预置收集器

  1. Arrilot\BitrixCollectors\FileCollector - 使用 d7 的 FileTable::getList
  2. Arrilot\BitrixCollectors\SectionCollector - SectionTable::getList
  3. Arrilot\BitrixCollectors\ElementCollector - CIBlockElement::GetList + Fetch. 建议使用 2.0 版本的信息块以避免多属性问题。
  4. Arrilot\BitrixCollectors\UserCollector - UserTable::getList

抽象收集器类。在开发额外收集器时可以从中继承。

  1. Arrilot\BitrixCollectors\TableCollector - 用于数据存储在单独的表中且没有 d7 orm 类的情况。
  2. 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 查询而不进行额外处理。