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 {@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
| 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 mixed __construct ( Yiisoft\Db\QueryBuilder\QueryBuilderInterface $queryBuilder ) | ||
| $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 {@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);
}
Signup or Login in order to comment.