framework/db/QueryBuilder.php
protected function prepareInsertSelectSubQuery($columns, $schema, $params = [])
    {
        if (!is_array($columns->select) || empty($columns->select) || in_array('*', $columns->select)) {
            throw new InvalidArgumentException('Expected select query object with enumerated (named) parameters');
        }

        list($values, $params) = $this->build($columns, $params);
        $names = [];
        $values = ' ' . $values;
        foreach ($columns->select as $title => $field) {
            if (is_string($title)) {
                $names[] = $schema->quoteColumnName($title);
            } elseif (preg_match('/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/', $field, $matches)) {
                $names[] = $schema->quoteColumnName($matches[2]);
            } else {
                $names[] = $schema->quoteColumnName($field);
            }
        }

        return [$names, $values, $params];
    }
protected function prepareInsertSelectSubQuery($columns, $schema, $params = [])
    {
        if (!is_array($columns->select) || empty($columns->select) || in_array('*', $columns->select)) {
            throw new InvalidArgumentException('Expected select query object with enumerated (named) parameters');
        }

        list($values, $params) = $this->build($columns, $params);
        $names = [];
        $values = ' ' . $values;
        foreach ($columns->select as $title => $field) {
            if (is_string($title)) {
                $names[] = $schema->quoteColumnName($title);
            } elseif (preg_match('/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/', $field, $matches)) {
                $names[] = $schema->quoteColumnName($matches[2]);
            } else {
                $names[] = $schema->quoteColumnName($field);
            }
        }

        return [$names, $values, $params];
    }
protected function prepareInsertSelectSubQuery ( $ columns , $ schema , $ params = [ ] ) { if ( ! is_array ( $ columns -> select ) || empty ( $ columns -> select ) || in_array ( '*' , $ columns -> select ) ) { throw new InvalidArgumentException ( 'Expected select query object with enumerated (named) parameters' ) ; } list ( $ values , $ params ) = $ this -> build ( $ columns , $ params ) ; $ names = [ ] ; $ values = ' ' . $ values ; foreach ( $ columns -> select as $ title => $ field ) { if ( is_string ( $ title ) ) { $ names [ ] = $ schema -> quoteColumnName ( $ title ) ; } elseif ( preg_match ( '/^(.*?)(?i:\s+as\s+|\s+)([\w\-_\.]+)$/' , $ field , $ matches ) ) { $ names [ ] = $ schema -> quoteColumnName ( $ matches [ 2 ] ) ; } else { $ names [ ] = $ schema -> quoteColumnName ( $ field ) ; } } return [ $ names , $ values , $ params ] ; }
Prepare select-subquery and field names for INSERT INTO ... SELECT SQL statement.

@param Query $columns Object, which represents select query.
@param \yii\db\Schema $schema Schema object to quote column name.
@param array $params the parameters to be bound to the generated SQL statement. These parameters will
be included in the result with the additional parameters generated during the query building process.
@return array array of column names, values and params.
@throws InvalidArgumentException if query's select does not contain named parameters only.
@since 2.0.11
Prepare select - subquery and field names for INSERT INTO ... SELECT SQL statement .