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

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

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

Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $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 запроса в БД.

Есть вопросы или нашли ошибку? Напишите комментарий (можно без регистрации), отвечать стараюсь быстро.

Опубликовано 1 апреля 2022 | Обновлено 14 ноября 2024
оптимизация, примеры кода, разработчику
Поделиться
Похожие статьи
Оптимизация запросов файлов
Если использовать стандартные компоненты и примеры кода, то запросы будут идти в цикле, что не оптим...
Читать дальше » 0
Алексей,
Проверяем наличие товара на складе
Хоть в битрикс склады и используются только для вывода информации, многие их переделывают под реальн...
Читать дальше » 0
Алексей,
Комментарии
❮…❯
Авторизуйтесь чтобы получать уведомления об ответе
Получение значений свойств элементов одного инфоблока для компонента. Строго рекомендуется как замена кода вида $obj->GetProperties().