/** * {@inheritdoc} */ public function getColumns($tableName) { $columns = array(); $rows = $this->fetchAll(sprintf('SHOW COLUMNS FROM %s', $tableName)); foreach ($rows as $columnInfo) { $column = new Column(); $column->setName($columnInfo['Field'])->setType($columnInfo['Type'])->setNull($columnInfo['Null'] != 'NO')->setDefault($columnInfo['Default']); $phinxType = $this->getPhinxType($columnInfo['Type']); $column->setType($phinxType['name'])->setLimit($phinxType['limit']); if ($columnInfo['Extra'] == 'auto_increment') { $column->setIdentity(true); } $columns[] = $column; } return $columns; }
/** * {@inheritdoc} */ public function getColumns($tableName) { $columns = array(); $rows = $this->fetchAll(sprintf('pragma table_info(%s)', $this->quoteTableName($tableName))); foreach ($rows as $columnInfo) { $column = new Column(); $type = strtolower($columnInfo['type']); $column->setName($columnInfo['name'])->setNull($columnInfo['notnull'] != '1')->setDefault($columnInfo['dflt_value']); $phinxType = $this->getPhinxType($type); $column->setType($phinxType['name'])->setLimit($phinxType['limit']); if ($columnInfo['pk'] == 1) { $column->setIdentity(true); } $columns[] = $column; } return $columns; }
/** * Change a table column type. * * @param string $columnName Column Name * @param string|Column $newColumnType New Column Type * @param array $options Options * @return Table */ public function changeColumn($columnName, $newColumnType, $options = array()) { // create a column object if one wasn't supplied if (!$newColumnType instanceof Column) { $newColumn = new Column(); $newColumn->setType($newColumnType); $newColumn->setOptions($options); } else { $newColumn = $newColumnType; } // if the name was omitted use the existing column name if (null === $newColumn->getName() || strlen($newColumn->getName()) === 0) { $newColumn->setName($columnName); } $this->getAdapter()->changeColumn($this->getName(), $columnName, $newColumn); return $this; }
/** * Sets the column dbType. * * @param string $type * * @return $this */ public function setType($type) { $this->column->setType($type); return $this; }