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 {@see \Yiisoft\Db\Expression\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 {@see \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 mixed __construct ( Yiisoft\Db\QueryBuilder\QueryBuilderInterface $queryBuilder )
$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 {@see \Yiisoft\Db\Expression\ExpressionInterface} objects.

public string build ( Yiisoft\Db\Expression\Expression $expression, array &$params = [] )
$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);
}