/** * Performs conversion of SELECT statement */ protected function addSelectStatement() { foreach ($this->definition['columns'] as $column) { $columnName = $column['name']; $fieldName = $this->getFieldName($columnName); $functionExpr = null; $functionReturnType = null; if (!empty($column['func'])) { $function = $this->functionProvider->getFunction($column['func']['name'], $column['func']['group_name'], $column['func']['group_type']); $functionExpr = $function['expr']; if (isset($function['return_type'])) { $functionReturnType = $function['return_type']; } else { $functionReturnType = null; } } $isDistinct = !empty($column['distinct']); $tableAlias = $this->getTableAliasForColumn($columnName); if (isset($column['label'])) { $columnLabel = $column['label']; } else { $columnLabel = $fieldName; } $this->addSelectColumn($this->getEntityClassName($columnName), $tableAlias, $fieldName, $this->buildColumnExpression($columnName, $tableAlias, $fieldName), $this->getColumnAlias($this->buildColumnAliasKey($column)), $columnLabel, $functionExpr, $functionReturnType, $isDistinct); } }
/** * @param array $column * * @return array Where array has elements: string|FunctionInterface|null, string|null */ protected function createColumnFunction(array $column) { if (!empty($column['func'])) { $function = $this->functionProvider->getFunction($column['func']['name'], $column['func']['group_name'], $column['func']['group_type']); $functionExpr = $function['expr']; $functionReturnType = isset($function['return_type']) ? $function['return_type'] : null; return [$functionExpr, $functionReturnType]; } return [null, null]; }