0 follower

Final Class Yiisoft\Db\Pgsql\Builder\CaseXBuilder

InheritanceYiisoft\Db\Pgsql\Builder\CaseXBuilder » Yiisoft\Db\Expression\Statement\Builder\CaseXBuilder

Builds expressions for {@see CaseX}.

Public Methods

Hide inherited methods

Method Description Defined By
build() Yiisoft\Db\Pgsql\Builder\CaseXBuilder

Method Details

Hide inherited methods

build() public method

public string build ( \Yiisoft\Db\Expression\Statement\CaseX $expression, array &$params = [] )
$expression \Yiisoft\Db\Expression\Statement\CaseX

The CASE expression to build.

$params array

                public function build(ExpressionInterface $expression, array &$params = []): string
{
    $sql = 'CASE';
    if ($expression->value !== null) {
        $caseTypeHint = $this->buildTypeHint($expression->valueType);
        $sql .= ' ' . $this->buildCaseValueWithTypeHint($expression->value, $caseTypeHint, $params);
    } else {
        $caseTypeHint = '';
    }
    foreach ($expression->whenThen as $whenThen) {
        $sql .= ' WHEN ' . $this->buildConditionWithTypeHint($whenThen->when, $caseTypeHint, $params);
        $sql .= ' THEN ' . $this->queryBuilder->buildValue($whenThen->then, $params);
    }
    if ($expression->hasElse()) {
        $sql .= ' ELSE ' . $this->queryBuilder->buildValue($expression->else, $params);
    }
    return $sql . ' END';
}