25 lines
562 B
PHP
25 lines
562 B
PHP
|
<?php
|
||
|
|
||
|
namespace Core\Driver\SQL\Expression;
|
||
|
|
||
|
use Core\Driver\SQL\SQL;
|
||
|
|
||
|
class Coalesce extends Expression {
|
||
|
|
||
|
private array $values;
|
||
|
|
||
|
public function __construct(mixed ...$values) {
|
||
|
$this->values = $values;
|
||
|
}
|
||
|
|
||
|
function getExpression(SQL $sql, array &$params): string {
|
||
|
$values = implode(",", array_map(function ($value) use ($sql, &$params) {
|
||
|
if (is_string($value)) {
|
||
|
return $sql->columnName($value);
|
||
|
} else {
|
||
|
return $sql->addValue($value, $params);
|
||
|
}
|
||
|
}, $this->values));
|
||
|
return "COALESCE($values)";
|
||
|
}
|
||
|
}
|