0 follower

Final Class Yiisoft\Db\QueryBuilder\Condition\Builder\LogicalBuilder

InheritanceYiisoft\Db\QueryBuilder\Condition\Builder\LogicalBuilder
ImplementsYiisoft\Db\Expression\ExpressionBuilderInterface

Build an object of {@see AndX} or {@see OrX} into SQL expressions.

Method Details

Hide inherited methods

__construct() public method

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

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

            
build() public method

Build SQL for {@see AndX} or {@see OrX}.

public string build ( Yiisoft\Db\QueryBuilder\Condition\AndX|Yiisoft\Db\QueryBuilder\Condition\OrX $expression, array &$params = [] )
$expression Yiisoft\Db\QueryBuilder\Condition\AndX|Yiisoft\Db\QueryBuilder\Condition\OrX
$params array
throws InvalidArgumentException
throws Yiisoft\Db\Exception\NotSupportedException

                public function build(ExpressionInterface $expression, array &$params = []): string
{
    $parts = $this->buildExpressions($expression->expressions, $params);
    if (empty($parts)) {
        return '';
    }
    if (count($parts) === 1) {
        return (string) reset($parts);
    }
    $operator = match ($expression::class) {
        AndX::class => 'AND',
        OrX::class => 'OR',
    };
    return '(' . implode(") $operator (", $parts) . ')';
}