SQLBuilder\Universal\Query\InsertQuery::toSql PHP Method

toSql() public method

public toSql ( BaseDriver $driver, SQLBuilder\ArgumentArray $args )
$driver SQLBuilder\Driver\BaseDriver
$args SQLBuilder\ArgumentArray
    public function toSql(BaseDriver $driver, ArgumentArray $args)
    {
        $sql = 'INSERT';
        if (!empty($this->options)) {
            $sql .= $this->buildOptionClause();
        }
        $sql .= ' INTO ' . $driver->quoteTable($this->intoTable);
        // append partition clause if needed.
        $sql .= $this->buildPartitionClause($driver, $args);
        $valuesClauses = array();
        $varCnt = 1;
        // build columns
        $columns = $this->getColumnNames($driver);
        foreach ($this->values as $values) {
            $deflatedValues = array();
            foreach ($values as $key => $value) {
                $deflatedValues[] = $driver->deflate($value, $args);
            }
            $valuesClauses[] = '(' . join(',', $deflatedValues) . ')';
        }
        $sql .= ' (' . join(',', $columns) . ')' . ' VALUES ' . join(', ', $valuesClauses);
        // Check if RETURNING is supported
        if ($this->returning && $driver instanceof PgSQLDriver) {
            $sql .= ' RETURNING ' . join(',', $driver->quoteColumns($this->returning));
        }
        return $sql;
    }

Usage Example

Example #1
0
 public function testInsertWithQuestionMark()
 {
     $driver = new MySQLDriver();
     $driver->setQMarkParamMarker();
     $args = new ArgumentArray();
     $query = new InsertQuery();
     $query->option('LOW_PRIORITY', 'IGNORE');
     $query->insert(['name' => new Bind('name', 'John'), 'confirmed' => new Bind('confirmed', true)])->into('users');
     $query->returning('id');
     $sql = $query->toSql($driver, $args);
     $this->assertEquals('INSERT LOW_PRIORITY IGNORE INTO users (name,confirmed) VALUES (?,?)', $sql);
 }
All Usage Examples Of SQLBuilder\Universal\Query\InsertQuery::toSql