/** * {@inheritdoc} */ public function alterColumn(AbstractTable $table, AbstractColumn $initial, AbstractColumn $column) { $query = "ALTER TABLE {table} CHANGE {column} {statement}"; $query = \Spiral\interpolate($query, ['table' => $table->getName(true), 'column' => $initial->getName(true), 'statement' => $column->sqlStatement()]); $this->run($query); return $this; }
/** * {@inheritdoc} */ public function sqlStatement() { $statement = parent::sqlStatement(); if ($this->abstractType() != 'enum') { return $statement; } $enumValues = []; foreach ($this->enumValues as $value) { $enumValues[] = $this->table->driver()->getPDO()->quote($value); } return "{$statement} CHECK ({$this->getName(true)} IN (" . join(', ', $enumValues) . "))"; }
/** * {@inheritdoc} */ public function sqlStatement() { $defaultValue = $this->defaultValue; if (in_array($this->type, $this->forbiddenDefaults)) { //Flushing default value for forbidden types $this->defaultValue = null; } $statement = parent::sqlStatement(); $this->defaultValue = $defaultValue; if ($this->autoIncrement) { return "{$statement} AUTO_INCREMENT"; } return $statement; }
/** * {@inheritdoc} */ protected function doColumnChange(AbstractColumn $column, AbstractColumn $dbColumn) { $query = \Spiral\interpolate("ALTER TABLE {table} CHANGE {column} {statement}", ['table' => $this->getName(true), 'column' => $dbColumn->getName(true), 'statement' => $column->sqlStatement()]); $this->driver->statement($query); }
/** * Driver specific column add command. * * @param AbstractColumn $column */ protected function doColumnAdd(AbstractColumn $column) { $this->driver->statement("ALTER TABLE {$this->getName(true)} ADD COLUMN {$column->sqlStatement()}"); }
/** * Driver specific column add command. * * @param AbstractTable $table * @param AbstractColumn $column * @return self */ public function addColumn(AbstractTable $table, AbstractColumn $column) { $this->run("ALTER TABLE {$table->getName(true)} ADD COLUMN {$column->sqlStatement()}"); return $this; }