# Class yii\db\conditions\BetweenColumnsConditionBuilder

Inheritance | yii\db\conditions\BetweenColumnsConditionBuilder
Implements | yii\db\ExpressionBuilderInterface
Uses Traits | yii\db\ExpressionBuilderTrait
Available since version | 2.0.14
Source Code | https://github.com/yiisoft/yii2/blob/master/framework/db/conditions/BetweenColumnsConditionBuilder.php

Class BetweenColumnsConditionBuilder builds objects of yii\db\conditions\BetweenColumnsCondition

## Protected Properties

Hide inherited properties

Property | Type | Description | Defined By
--- | --- | --- | ---

## Public Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
__construct() | ExpressionBuilderTrait constructor. | yii\db\ExpressionBuilderTrait
build() | Method builds the raw SQL from the $expression that will not be additionally escaped or quoted. | yii\db\conditions\BetweenColumnsConditionBuilder

## Protected Methods

Hide inherited methods

Method | Description | Defined By
--- | --- | ---
createPlaceholder() | Attaches $value to $params array and returns placeholder. | yii\db\conditions\BetweenColumnsConditionBuilder
escapeColumnName() | Prepares column name to be used in SQL statement. | yii\db\conditions\BetweenColumnsConditionBuilder

## Method Details

Hide inherited methods

__construct() public method

Defined in: yii\db\ExpressionBuilderTrait::__construct()

ExpressionBuilderTrait constructor.

public void __construct ( yii\db\QueryBuilder $queryBuilder )
$queryBuilder | yii\db\QueryBuilder |

Source code

                    public function __construct(QueryBuilder $queryBuilder)
    {
        $this->queryBuilder = $queryBuilder;
    }

build() public method

Method builds the raw SQL from the $expression that will not be additionally escaped or quoted.

public string build ( yii\db\ExpressionInterface $expression, array &$params = [] )
$expression | yii\db\ExpressionInterface|yii\db\conditions\BetweenColumnsCondition | The expression to be built.
$params | array | The binding parameters.
return | string | The raw SQL that will not be additionally escaped or quoted.

Source code

                    public function build(ExpressionInterface $expression, array &$params = [])
    {
        $operator = $expression->getOperator();
        $startColumn = $this->escapeColumnName($expression->getIntervalStartColumn(), $params);
        $endColumn = $this->escapeColumnName($expression->getIntervalEndColumn(), $params);
        $value = $this->createPlaceholder($expression->getValue(), $params);
        return "$value $operator $startColumn AND $endColumn";
    }

createPlaceholder() protected method

Attaches $value to $params array and returns placeholder.

protected string createPlaceholder ( $value, &$params )
$value | mixed |
$params | array | Passed by reference

Source code

                    protected function createPlaceholder($value, &$params)
    {
        if ($value instanceof ExpressionInterface) {
            return $this->queryBuilder->buildExpression($value, $params);
        }
        return $this->queryBuilder->bindParam($value, $params);
    }

escapeColumnName() protected method

Prepares column name to be used in SQL statement.

protected string escapeColumnName ( $columnName, &$params = [] )
$columnName | yii\db\Query|yii\db\ExpressionInterface|string |
$params | array | The binding parameters.

Source code

                    protected function escapeColumnName($columnName, &$params = [])
    {
        if ($columnName instanceof Query) {
            list($sql, $params) = $this->queryBuilder->build($columnName, $params);
            return "($sql)";
        } elseif ($columnName instanceof ExpressionInterface) {
            return $this->queryBuilder->buildExpression($columnName, $params);
        } elseif (strpos($columnName, '(') === false) {
            return $this->queryBuilder->db->quoteColumnName($columnName);
        }
        return $columnName;
    }