3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
12 namespace Civi\Api4\Query
;
14 use Civi\API\Exception\UnauthorizedException
;
17 * Sql column expression
19 class SqlField
extends SqlExpression
{
21 public $supportsExpansion = TRUE;
23 protected function initialize() {
24 if ($this->alias
&& $this->alias
!== $this->expr
) {
25 throw new \
API_Exception("Aliasing field names is not allowed, only expressions can have an alias.");
27 $this->fields
[] = $this->expr
;
30 public function render(array $fieldList): string {
31 if (!isset($fieldList[$this->expr
])) {
32 throw new \
API_Exception("Invalid field '{$this->expr}'");
34 if ($fieldList[$this->expr
] === FALSE) {
35 throw new UnauthorizedException("Unauthorized field '{$this->expr}'");
37 if (!empty($fieldList[$this->expr
]['sql_renderer'])) {
38 $renderer = $fieldList[$this->expr
]['sql_renderer'];
39 return $renderer($fieldList[$this->expr
]);
41 return $fieldList[$this->expr
]['sql_name'];