Пример группировки по какому-либо свойству
С точки зрения СУБД, для того, чтобы подсчитать, сколько элементов находится в таблице с тем или иным признаком, необходимо их сгруппировать по этому признаку. Например, у нас есть таблица, в которой находятся как дома из дерева, так и дома из бетона. Если в случае с MySQL для этого используется оператор GROUP BY, то в Битриксе мы для этих же целей можем использовать третий параметр метода GetList, который представляет из себя массив из названия полей, по значениям которых и будут сгруппированы результаты.
Сам код будет выглядеть примерно так:
// Задаём фильтр
$arFilter = array(
'SECTION_ID' => $arResult['SECTION']['ID'],
"IBLOCK_ID" => 2
);
// Третьим параметром указываем свойства для группировки
$dbRes = CIBlockElement::GetList(array(), $arFilter, array('PROPERTY_MATERIAL'), false,array('NAME','PROPERTY_MATERIAL'));
// Получаем результаты, формируем массив arResult
while ($item = $dbRes->GetNext()) {
$arResult['materials'][] = [
'mat_name' => $item['PROPERTY_MATERIAL_VALUE'],
'mat_cnt' => $item['CNT']
];
}
в ключе CNT будет храниться количество элементов с данным признаком.
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()