• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/orm/query/query.php
  • Класс: Bitrix\Main\ORM\Query\Query
  • Вызов: Query::checkFilterAggregation
protected function checkFilterAggregation($filter)
{
	foreach ($filter as $filter_def => $filter_match)
	{
		if ($filter_def === 'LOGIC')
		{
			continue;
		}

		$is_having = false;
		if (!is_numeric($filter_def))
		{
			$sqlWhere = new \CSQLWhere();
			$csw_result = $sqlWhere->makeOperation($filter_def);
			list($definition, ) = array_values($csw_result);

			$chain = $this->filter_chains[$definition];
			$last = $chain->getLastElement();

			$is_having = $last->getValue() instanceof ExpressionField && $last->getValue()->isAggregated();
		}
		elseif (is_array($filter_match))
		{
			$is_having = $this->checkFilterAggregation($filter_match);
		}

		if ($is_having)
		{
			return true;
		}
	}

	return false;
}