Запрос свойств для массива элементов
Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $obj->GetProperties()
Пример кода:
$arOffers = []; $dbOffers = CIBlockElement::GetList( // Получаем элементы и необходимые поля [], [ 'IBLOCK_ID' => $offerIblockId, 'ACTIVE' => 'Y', ], false, false, ['ID', 'IBLOCK_ID', 'SORT', 'CODE'] ); while ($arOffer = $dbOffers->GetNext()) { $arOffer['PROPERTIES'] = []; $arOffers[$arOffer['ID']] = $arOffer; } if ($arOffers) { \CIBlockElement::GetPropertyValuesArray( $arOffers, $offerIblockId, [ 'ACTIVE' => 'Y', 'ID' => array_keys($arOffers) ], [ 'CODE' => [ // Получаем только необходимые свойства элементов 'CML2_LINK', 'COLOR', 'SIZE' ] ], [ 'PROPERTY_FIELDS' => [ // Получаем только значения (VALUE и DESCRIPTION добавляются автоматически) 'ID' ] ] ); }
Таким образом получается всего 2 запроса в БД.
Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.