/**
  * {@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;
 }
Exemple #4
0
 /**
  * {@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;
 }