/** * カラム情報を取得する * * @param string $table_name * @return Column[] */ public function getColumns($table_name) { $sql = sprintf('SHOW COLUMNS FROM %s', $this->quoteTableName($table_name)); $results = $this->db->build($sql)->fetchAll(); $columns = []; foreach ($results as $result) { preg_match('/^.*\\(([0-9]+)\\)/', $result->Type, $matches); $limit = isset($matches[1]) ? $matches[1] : null; $column = new Column(); $column->setName($result->Field)->setType($result->Type)->setNull($result->Null === 'YES')->setDefault($result->Default)->setLimit($limit); if ($result->Extra == 'auto_increment') { $result->setIdentity(true); } $columns[] = $column; } return $columns; }
/** * カラム情報を変更する * * @param string $column_name * @param string $column_type * @param array $options * @return Table */ public function changeColumn($column_name, $column_type, $options = []) { $column = new Column(); $column->setName($column_name); $column->setType($column_type); $column->setOptions($options); $this->getAdapter()->changeColumn($this->getName(), $column); return $this; }