0 follower

Final Class Yiisoft\Db\Expression\ExpressionBuilder

InheritanceYiisoft\Db\Expression\ExpressionBuilder
ImplementsYiisoft\Db\Expression\ExpressionBuilderInterface

It's used to build expressions for use in database queries.

It provides a build() method for creating various types of expressions, such as conditions, joins, and ordering clauses.

These expressions can be used with the query builder to build complex and customizable database queries Yiisoft\Db\Expression\Expression class.

Public Methods

Hide inherited methods

Method Description Defined By
__construct() Yiisoft\Db\Expression\ExpressionBuilder
build() Builds an SQL expression from the given expression object. Yiisoft\Db\Expression\ExpressionBuilder

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

Builds an SQL expression from the given expression object.

This method is called by the query builder to build SQL expressions from Yiisoft\Db\Expression\ExpressionInterface objects.

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

The expression to build.

$params array

The parameters to be bound to the query.

return string

SQL expression.

                public function build(ExpressionInterface $expression, array &$params = []): string
{
    $sql = $expression->expression;
    $expressionParams = $expression->params;
    if (empty($expressionParams)) {
        return $sql;
    }
    if (isset($expressionParams[0])) {
        $params = array_merge($params, $expressionParams);
        return $sql;
    }
    $nonUniqueReplacements = $this->appendParams($expressionParams, $params);
    $expressionReplacements = $this->buildParamExpressions($expressionParams, $params);
    $replacements = $this->mergeReplacements($nonUniqueReplacements, $expressionReplacements);
    if (empty($replacements)) {
        return $sql;
    }
    return $this->queryBuilder->replacePlaceholders($sql, $replacements);
}