项目作者: izica

项目描述 :
CMS Bitrix query builder
高级语言: PHP
项目地址: git://github.com/izica/bitrix-iblock-query-builder.git
创建时间: 2018-10-31T11:12:47Z
项目社区:https://github.com/izica/bitrix-iblock-query-builder

开源协议:MIT License

下载


Установка

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

  1. 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]

  1. $arBadgesItems = IblockQuery::items()
  2. ->filter($arFilter)
  3. ->select($arSelect)
  4. ->sort($arSort)
  5. ->nav($arNav)
  6. ->properties(false) // выключает запрос на доп. свойства
  7. ->cache()
  8. ->map(function($arItem){
  9. $arItem['PREVIEW_PICTURE'] = CFile::GetPath($arItem['PREVIEW_PICTURE']);
  10. return $arItem;
  11. })
  12. ->execute(); // возвращает экземляр класса IblockQueryResult
  13. $arBadgesSections = IblockQuery::sections()
  14. ->filter($arFilter)
  15. ->select($arSelect)
  16. ->sort($arSort)
  17. ->nav($arNav)
  18. ->cache()
  19. ->execute()
  20. ->all();

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

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

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

  1. $arBadgesSections = IblockQuery::items()
  2. ->filter($arFilter)
  3. ->select($arSelect)
  4. ->sort($arSort)
  5. ->nav($arNav)
  6. ->properties(false)
  7. ->cache()
  8. ->map(function($arItem){
  9. $arItem['PREVIEW_PICTURE'] = CFile::GetPath($arItem['PREVIEW_PICTURE']);
  10. return $arItem;
  11. })
  12. ->execute();

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

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

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

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

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

  1. $arBadgesItems = IblockQuery::items()
  2. ->filter($arFilter)
  3. ->select($arSelect)
  4. ->sort($arSort)
  5. ->nav($arNav)
  6. ->properties(false)
  7. ->cache()
  8. ->execute();