0 follower

Final Class Yiisoft\Db\Mssql\Builder\LeastBuilder

InheritanceYiisoft\Db\Mssql\Builder\LeastBuilder » Yiisoft\Db\Expression\Function\Builder\MultiOperandFunctionBuilder

Builds SQL LEAST() function expressions for {@see Least} objects.

Protected Methods

Hide inherited methods

Method Description Defined By
buildFromExpression() Builds a SQL LEAST() function expression from the given {@see Least} object. Yiisoft\Db\Mssql\Builder\LeastBuilder

Method Details

Hide inherited methods

buildFromExpression() protected method

Builds a SQL LEAST() function expression from the given {@see Least} object.

protected string buildFromExpression ( \Yiisoft\Db\Expression\Function\Least $expression, array &$params )
$expression \Yiisoft\Db\Expression\Function\Least

The expression to build.

$params array

The parameters to bind.

return string

The SQL LEAST() function expression.

                protected function buildFromExpression(MultiOperandFunction $expression, array &$params): string
{
    $serverVersion = $this->queryBuilder->getServerInfo()->getVersion();
    if (version_compare($serverVersion, '16', '<')) {
        $builtSelects = [];
        foreach ($expression->getOperands() as $operand) {
            $builtSelects[] = 'SELECT ' . $this->buildOperand($operand, $params) . ' AS value';
        }
        $unions = implode(' UNION ', $builtSelects);
        return "(SELECT MIN(value) FROM ($unions) AS t)";
    }
    $builtOperands = [];
    foreach ($expression->getOperands() as $operand) {
        $builtOperands[] = $this->buildOperand($operand, $params);
    }
    return 'LEAST(' . implode(', ', $builtOperands) . ')';
}