0 follower

Final Class Yiisoft\Db\Mysql\Builder\JsonOverlapsBuilder

InheritanceYiisoft\Db\Mysql\Builder\JsonOverlapsBuilder
ImplementsYiisoft\Db\Expression\ExpressionBuilderInterface

Builds expressions for JsonOverlaps for MySQL Server.

Method Details

Hide inherited methods

__construct() public method

public __construct( \Yiisoft\Db\QueryBuilder\QueryBuilderInterface $queryBuilder ): mixed
$queryBuilder \Yiisoft\Db\QueryBuilder\QueryBuilderInterface

                public function __construct(
    private readonly QueryBuilderInterface $queryBuilder,
) {}

            
build() public method

Build SQL for JsonOverlaps.

public build( \Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps $expression, array &$params = [] ): string
$expression \Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps

The \Yiisoft\Db\QueryBuilder\Condition\JsonOverlaps to be built.

$params array
throws \Yiisoft\Db\Exception\Exception
throws InvalidArgumentException
throws \Yiisoft\Db\Exception\InvalidConfigException
throws \Yiisoft\Db\Exception\NotSupportedException

                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 JsonValue($values);
    }
    $values = $this->queryBuilder->buildExpression($values, $params);
    return "JSON_OVERLAPS($column, $values)";
}