Final Class Yiisoft\Db\Mssql\Builder\GreatestBuilder
| Inheritance | Yiisoft\Db\Mssql\Builder\GreatestBuilder » Yiisoft\Db\Expression\Function\Builder\MultiOperandFunctionBuilder |
|---|
Builds SQL GREATEST() function expressions for {@see Greatest} objects.
Protected Methods
| Method | Description | Defined By |
|---|---|---|
| buildFromExpression() | Builds a SQL GREATEST() function expression from the given {@see Greatest} object. |
Yiisoft\Db\Mssql\Builder\GreatestBuilder |
Method Details
Builds a SQL GREATEST() function expression from the given {@see Greatest} object.
| protected string buildFromExpression ( \Yiisoft\Db\Expression\Function\Greatest $expression, array &$params ) | ||
| $expression | \Yiisoft\Db\Expression\Function\Greatest |
The expression to build. |
| $params | array |
The parameters to bind. |
| return | string |
The SQL |
|---|---|---|
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 MAX(value) FROM ($unions) AS t)";
}
$builtOperands = [];
foreach ($expression->getOperands() as $operand) {
$builtOperands[] = $this->buildOperand($operand, $params);
}
return 'GREATEST(' . implode(', ', $builtOperands) . ')';
}
Signup or Login in order to comment.