"ALTER TABLE %1\$s\n", self::ADD_COLUMNS => [ "%1\$s" => [ [1 => "ADD COLUMN %1\$s,\n", 'combinedby' => ""] ] ], self::CHANGE_COLUMNS => [ "%1\$s" => [ [2 => "CHANGE COLUMN %1\$s %2\$s,\n", 'combinedby' => ""], ] ], self::DROP_COLUMNS => [ "%1\$s" => [ [1 => "DROP COLUMN %1\$s,\n", 'combinedby' => ""], ] ], self::ADD_CONSTRAINTS => [ "%1\$s" => [ [1 => "ADD %1\$s,\n", 'combinedby' => ""], ] ], self::DROP_CONSTRAINTS => [ "%1\$s" => [ [1 => "DROP CONSTRAINT %1\$s,\n", 'combinedby' => ""], ] ] ]; /** * @var string */ protected $table = ''; /** * @param string|TableIdentifier $table */ public function __construct($table = '') { ($table) ? $this->setTable($table) : null; } /** * @param string $name * @return self Provides a fluent interface */ public function setTable($name) { $this->table = $name; return $this; } /** * @param Column\ColumnInterface $column * @return self Provides a fluent interface */ public function addColumn(Column\ColumnInterface $column) { $this->addColumns[] = $column; return $this; } /** * @param string $name * @param Column\ColumnInterface $column * @return self Provides a fluent interface */ public function changeColumn($name, Column\ColumnInterface $column) { $this->changeColumns[$name] = $column; return $this; } /** * @param string $name * @return self Provides a fluent interface */ public function dropColumn($name) { $this->dropColumns[] = $name; return $this; } /** * @param string $name * @return self Provides a fluent interface */ public function dropConstraint($name) { $this->dropConstraints[] = $name; return $this; } /** * @param Constraint\ConstraintInterface $constraint * @return self Provides a fluent interface */ public function addConstraint(Constraint\ConstraintInterface $constraint) { $this->addConstraints[] = $constraint; return $this; } /** * @param string|null $key * @return array */ public function getRawState($key = null) { $rawState = [ self::TABLE => $this->table, self::ADD_COLUMNS => $this->addColumns, self::DROP_COLUMNS => $this->dropColumns, self::CHANGE_COLUMNS => $this->changeColumns, self::ADD_CONSTRAINTS => $this->addConstraints, self::DROP_CONSTRAINTS => $this->dropConstraints, ]; return (isset($key) && array_key_exists($key, $rawState)) ? $rawState[$key] : $rawState; } protected function processTable(PlatformInterface $adapterPlatform = null) { return [$this->resolveTable($this->table, $adapterPlatform)]; } protected function processAddColumns(PlatformInterface $adapterPlatform = null) { $sqls = []; foreach ($this->addColumns as $column) { $sqls[] = $this->processExpression($column, $adapterPlatform); } return [$sqls]; } protected function processChangeColumns(PlatformInterface $adapterPlatform = null) { $sqls = []; foreach ($this->changeColumns as $name => $column) { $sqls[] = [ $adapterPlatform->quoteIdentifier($name), $this->processExpression($column, $adapterPlatform) ]; } return [$sqls]; } protected function processDropColumns(PlatformInterface $adapterPlatform = null) { $sqls = []; foreach ($this->dropColumns as $column) { $sqls[] = $adapterPlatform->quoteIdentifier($column); } return [$sqls]; } protected function processAddConstraints(PlatformInterface $adapterPlatform = null) { $sqls = []; foreach ($this->addConstraints as $constraint) { $sqls[] = $this->processExpression($constraint, $adapterPlatform); } return [$sqls]; } protected function processDropConstraints(PlatformInterface $adapterPlatform = null) { $sqls = []; foreach ($this->dropConstraints as $constraint) { $sqls[] = $adapterPlatform->quoteIdentifier($constraint); } return [$sqls]; } }