Запрос свойств для массива элементов

56
Алексей,
Запрос свойств для массива элементов

Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $obj->GetProperties().

Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $obj->GetProperties()

Пример кода:

$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;
	$offerIds[] = $arOffer['ID'];
}

\CIBlockElement::GetPropertyValuesArray( // Получаем только необходимые свойства элементов
	$arOffers,
	$offerIblockId,
	[
		'ACTIVE' => 'Y',
		'ID' => $offerIds
	],
	[
		'CODE' => [
			'CML2_LINK',
			'COLOR',
			'SIZE'
		]
	]
);

Таким образом получается всего 2 запроса в БД.

Опубликовано 1 апреля 2022
оптимизация, примеры кода, разработчику
Поделиться
Комментарии
Авторизуйтесь чтобы получать уведомления об ответе
Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $obj->GetProperties().