• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/orm/fields/expressionfield.php
  • Класс: Bitrix\Main\ORM\Fields\ExpressionField
  • Вызов: ExpressionField::getFullExpression
public function getFullExpression()
{
	if (!isset($this->fullExpression))
	{
		$SQLBuildFrom = array();
		$buildFromChains = $this->getBuildFromChains();

		foreach ($this->buildFrom as $element)
		{
			if ($element instanceof \Closure)
			{
				/** @var SqlExpression $sqlExpression */
				// no need to get real value. also it may [] to false positive check in hasAggregation or hasSubquery
				//$sqlExpression = $element();
				//$SQLBuildFrom[] = $sqlExpression->compile();
				$SQLBuildFrom[] = '';
			}
			else
			{
				$chain = array_shift($buildFromChains);

				if ($chain->getLastElement()->getValue() instanceof ExpressionField)
				{
					$SQLBuildFrom[] = $chain->getLastElement()->getValue()->getFullExpression();
				}
				else
				{
					$SQLBuildFrom[] = '%s';
				}
			}
		}

		$this->fullExpression = call_user_func_array('sprintf', array_merge(array($this->expression), $SQLBuildFrom));
	}

	return $this->fullExpression;
}