$res->AffectedRowsCount() можно использовать?
$res->SelectedRowsCount()
Получить отдельным запросом, передав [] в третий параметр
Это уже реализовано, однако предложенный метод SelectedRowsCount() сделает код более компактным. Чем плох предложенный метод или чем лучше передача пустого массива в праметре arGroupBy?
Тем, что [] дает запрос count(*), а SelectedRowsCount под капотом имеет mysqli_num_rows, т.е. число строк в итоговом запросе. В случае постранички одно не равно другому.
Спасибо!
Рад помочь
Спасибо за подробное разъяснение. Как считаете: в случае, когда не предполагается постраничной навигации (arNavStartParams = false), наиболее приемлемым будет SelectedRowsCount()? Логика проста: пропускать элементы с неуникальными свойствами, if($res->SelectedRowsCount() > 1) continue;
Я бы вообще не считал количество, если у вас нет постранички и число записей не более сотни-двух. Массив дубликатов и проверка, есть ли в нем значение. Если нет - выводим и заносим, есть - пропускаем.
Ещё раз спасибо за подробное разъяснение.
Если есть возможность переделать запрос на D7 и сервер БД MySQL, то лучше использовать этот метод - https://pilezkiy.com/blog/orm-bitrix-d7-count-elements/ Работает гораздо быстрее, чем два запроса. От старых запросов CIBlockElement::GetList лучше вообще отказаться: при больших объемах наглухо вешает сервер.
Обсуждают сегодня