izica/bitrix-iblock-query-builder

Query Builder for CMS Bitrix

3.3.1 2023-04-09 00:53 UTC

This package is auto-updated.

Last update: 2024-04-09 03:58:04 UTC


README

Установить через composer(или скачать), подключить в php_interface/init.php

composer require izica/bitrix-iblock-query-builder

Использование

Возможности

  • Получение информации о навигации
  • Получение разделов и элементов инфоблоков
  • Стрелочные вызовы функций в любом порядке
  • Мапинг результатов
  • Автокеширование
  • Автоматическое получение свойств элементов, с возможностью отключить получение свойств

Описание классов

  • IblockQuery

    • items()
    • sections()
    • filter($arFilter)
    • sort($arSort)
    • nav($arNav)
    • select($arSelect)
    • properties($bBoolean)
    • cache($sCustomKey = 'iblock-query', $ttl = 3600)
    • map($fnCallable)
    • execute() => IblockQueryResult
  • IblockQueryResult

    • all() // возвращает массив результата запроса
    • nav() // данные о пагинации
    • count()

Примечание

Массивы $arSort, $arFilter, $arSelect, $arNav соответсвуют формату [https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php]

$arBadgesItems = IblockQuery::items()
    ->filter($arFilter)
    ->select($arSelect)
    ->sort($arSort)
    ->nav($arNav)
    ->properties(false) // выключает запрос на доп. свойства
    ->cache()
    ->map(function($arItem){
        $arItem['PREVIEW_PICTURE'] = CFile::GetPath($arItem['PREVIEW_PICTURE']);
        return $arItem;
    })
    ->execute(); // возвращает экземляр класса IblockQueryResult

$arBadgesSections = IblockQuery::sections()
    ->filter($arFilter)
    ->select($arSelect)
    ->sort($arSort)
    ->nav($arNav)
    ->cache()
    ->execute()
    ->all();

Мапинг результатов и Автокеширование

Кеширование сработает уже после функции map(), поэтому запрос на картинки тоже сработает только 1 раз до кеширования.

cache($module = 'iblock-query', $ttl = 3600)

$arBadgesSections = IblockQuery::items()
    ->filter($arFilter)
    ->select($arSelect)
    ->sort($arSort)
    ->nav($arNav)
    ->properties(false)
    ->cache()
    ->map(function($arItem){
        $arItem['PREVIEW_PICTURE'] = CFile::GetPath($arItem['PREVIEW_PICTURE']);
        return $arItem;
    })
    ->execute();

Получение элементов инфоблока

$arBadgesItems = IblockQuery::items()
    ->filter(['IBLOCK_ID' => $nBadgesIblockId])
    ->select(['ID', 'NAME', 'PROPERTY_COLOR'])
    ->execute();

Получение разделов инфоблока

$arBadgesSections = IblockQuery::sections()
    ->filter(['IBLOCK_ID' => $nBadgesIblockId])
    ->select(['ID', 'NAME', 'PROPERTY_COLOR'])
    ->execute();

Получение элементов без доп. свойств

$arBadgesItems = IblockQuery::items()
    ->filter($arFilter)
    ->select($arSelect)
    ->sort($arSort)
    ->nav($arNav)
    ->properties(false)
    ->cache()
    ->execute();