Final Class Yiisoft\Db\Expression\ExpressionBuilder
| Inheritance | Yiisoft\Db\Expression\ExpressionBuilder |
|---|---|
| Implements | Yiisoft\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
| 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
| public __construct( Yiisoft\Db\QueryBuilder\QueryBuilderInterface $queryBuilder ): mixed | ||
| $queryBuilder | Yiisoft\Db\QueryBuilder\QueryBuilderInterface | |
public function __construct(private readonly QueryBuilderInterface $queryBuilder) {}
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);
}
Signup or Login in order to comment.