private function dumpTargets(Dialect $dialect, $prepend = null, $append = null) { if (count($this->targets) == 1) { return $prepend . $dialect->quoteTable(reset($this->targets)); } else { $tables = array(); foreach ($this->targets as $target) { if ($target instanceof DialectString) { $table = $dialect->quoteTable($target->toDialectString($dialect)); } else { $table = $dialect->quoteTable($target); } $tables[] = $prepend . $table; } return implode($append . ' ', $tables); } Assert::isUnreachable(); }
public function toDialectString(Dialect $dialect) { $query = 'INSERT INTO ' . $dialect->quoteTable($this->table) . ' '; if ($this->select === null) { $query = $this->toDialectStringValues($query, $dialect); } else { $query = $this->toDialectStringSelect($query, $dialect); } $query .= parent::toDialectString($dialect); return $query; }
public function toDialectString(Dialect $dialect) { if ($this->where) { $deleteStr = 'DELETE FROM ' . $dialect->quoteTable($this->table) . parent::toDialectString($dialect); $this->checkReturning($dialect); if (empty($this->returning)) { return $deleteStr; } else { $query = $deleteStr . ' RETURNING ' . $this->toDialectStringReturning($dialect); return $query; } } else { throw new WrongArgumentException("leave '{$this->table}' table alone in peace, bastard"); } }
public function toDialectString(Dialect $dialect) { $query = 'UPDATE ' . $dialect->quoteTable($this->table) . ' SET '; $sets = array(); foreach ($this->fields as $var => $val) { if ($val instanceof DialectString) { $sets[] = $dialect->quoteField($var) . ' = (' . $val->toDialectString($dialect) . ')'; } elseif ($val === null) { $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_NULL); } elseif (true === $val) { $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_TRUE); } elseif (false === $val) { $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->literalToString(Dialect::LITERAL_FALSE); } else { $sets[] = $dialect->quoteField($var) . ' = ' . $dialect->quoteValue($val); } } return $query . implode(', ', $sets) . $this->joiner->toDialectString($dialect) . parent::toDialectString($dialect); }
public function toDialectString(Dialect $dialect) { $name = $this->table->getName(); $middle = "CREATE TABLE {$dialect->quoteTable($name)} (\n "; $prepend = array(); $columns = array(); $primary = array(); $order = $this->table->getOrder(); foreach ($order as $column) { if ($column->isAutoincrement()) { if ($pre = $dialect->preAutoincrement($column)) { $prepend[] = $pre; } $columns[] = implode(' ', array($column->toDialectString($dialect), $dialect->postAutoincrement($column))); } else { $columns[] = $column->toDialectString($dialect); } $name = $column->getName(); if ($column->isPrimaryKey()) { $primary[] = $dialect->quoteField($name); } } $out = ($prepend ? implode("\n", $prepend) . "\n" : null) . $middle . implode(",\n ", $columns); if ($primary) { $out .= ",\n PRIMARY KEY(" . implode(', ', $primary) . ')'; } if ($uniques = $this->table->getUniques()) { $names = array(); foreach ($uniques as $row) { foreach ($row as $name) { $names[] = $dialect->quoteField($name); } $out .= ",\n UNIQUE(" . implode(', ', $names) . ')'; } } return $out . "\n);\n"; }
public function toDialectString(Dialect $dialect) { return 'DROP TABLE ' . $dialect->quoteTable($this->name) . $dialect->dropTableMode($this->cascade) . ';'; }
public static function findDifferences(Dialect $dialect, DBTable $source, DBTable $target) { $out = array(); $head = 'ALTER TABLE ' . $dialect->quoteTable($target->getName()); $sourceColumns = $source->getColumns(); $targetColumns = $target->getColumns(); foreach ($sourceColumns as $name => $column) { if (isset($targetColumns[$name])) { if ($column->getType()->getId() != $targetColumns[$name]->getType()->getId()) { $targetColumn = $targetColumns[$name]; $out[] = $head . ' ALTER COLUMN ' . $dialect->quoteField($name) . ' TYPE ' . $targetColumn->getType()->toString() . ($targetColumn->getType()->hasSize() ? '(' . $targetColumn->getType()->getSize() . ($targetColumn->getType()->hasPrecision() ? ', ' . $targetColumn->getType()->getPrecision() : null) . ')' : null) . ';'; } if ($column->getType()->isNull() != $targetColumns[$name]->getType()->isNull()) { $out[] = $head . ' ALTER COLUMN ' . $dialect->quoteField($name) . ' ' . ($targetColumns[$name]->getType()->isNull() ? 'DROP' : 'SET') . ' NOT NULL;'; } } else { $out[] = $head . ' DROP COLUMN ' . $dialect->quoteField($name) . ';'; } } foreach ($targetColumns as $name => $column) { if (!isset($sourceColumns[$name])) { $out[] = $head . ' ADD COLUMN ' . $column->toDialectString($dialect) . ';'; if ($column->hasReference()) { $out[] = 'CREATE INDEX ' . $dialect->quoteField($name . '_idx') . ' ON ' . $dialect->quoteTable($target->getName()) . '(' . $dialect->quoteField($name) . ');'; } } } return $out; }