Final Class Yiisoft\Db\Pgsql\Builder\ArrayOverlapsBuilder
| Inheritance | Yiisoft\Db\Pgsql\Builder\ArrayOverlapsBuilder |
|---|---|
| Implements | Yiisoft\Db\Expression\ExpressionBuilderInterface |
Builds expressions for {@see ArrayOverlaps} for PostgreSQL Server.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\Db\Pgsql\Builder\ArrayOverlapsBuilder | |
| build() | Build SQL for {@see ArrayOverlaps}. | Yiisoft\Db\Pgsql\Builder\ArrayOverlapsBuilder |
Method Details
| public mixed __construct ( \Yiisoft\Db\QueryBuilder\QueryBuilderInterface $queryBuilder ) | ||
| $queryBuilder | \Yiisoft\Db\QueryBuilder\QueryBuilderInterface | |
public function __construct(
private readonly QueryBuilderInterface $queryBuilder,
) {}
Build SQL for {@see ArrayOverlaps}.
| public string build ( \Yiisoft\Db\QueryBuilder\Condition\ArrayOverlaps $expression, array &$params = [] ) | ||
| $expression | \Yiisoft\Db\QueryBuilder\Condition\ArrayOverlaps |
The {@see \Yiisoft\Db\QueryBuilder\Condition\ArrayOverlaps} to be built. |
| $params | array | |
public function build(ExpressionInterface $expression, array &$params = []): string
{
$column = $expression->column instanceof ExpressionInterface
? $this->queryBuilder->buildExpression($expression->column)
: $this->queryBuilder->getQuoter()->quoteColumnName($expression->column);
$values = $expression->values;
if (!$values instanceof ExpressionInterface) {
$values = new ArrayValue($values);
} elseif ($values instanceof JsonValue) {
/** @psalm-suppress MixedArgument */
$values = new ArrayValue($values->value);
}
$values = $this->queryBuilder->buildExpression($values, $params);
if (preg_match('/::\w+\[]$/', $values, $matches) === 1) {
$typeHint = $matches[0];
return "$column$typeHint && $values";
}
return "$column::text[] && $values::text[]";
}
Signup or Login in order to comment.