yii\db\QueryBuilder::buildSubqueryInCondition PHP Method

buildSubqueryInCondition() protected method

Builds SQL for IN condition
protected buildSubqueryInCondition ( string $operator, array $columns, Query $values, array &$params ) : string
$operator string
$columns array
$values Query
$params array
return string SQL
    protected function buildSubqueryInCondition($operator, $columns, $values, &$params)
    {
        list($sql, $params) = $this->build($values, $params);
        if (is_array($columns)) {
            foreach ($columns as $i => $col) {
                if (strpos($col, '(') === false) {
                    $columns[$i] = $this->db->quoteColumnName($col);
                }
            }
            return '(' . implode(', ', $columns) . ") {$operator} ({$sql})";
        } else {
            if (strpos($columns, '(') === false) {
                $columns = $this->db->quoteColumnName($columns);
            }
            return "{$columns} {$operator} ({$sql})";
        }
    }

Usage Example

Exemplo n.º 1
0
 /**
  * @inheritdoc
  * @throws NotSupportedException if `$columns` is an array
  */
 protected function buildSubqueryInCondition($operator, $columns, $values, &$params)
 {
     if (is_array($columns)) {
         throw new NotSupportedException(__METHOD__ . ' is not supported by MSSQL.');
     }
     return parent::buildSubqueryInCondition($operator, $columns, $values, $params);
 }