/** * {@inheritdoc} */ public function getColumns($tableName) { $columns = array(); $sql = sprintf("SELECT column_name, data_type, is_identity, is_nullable,\n column_default, character_maximum_length, numeric_precision, numeric_scale\n FROM information_schema.columns\n WHERE table_name ='%s'", $tableName); $columnsInfo = $this->fetchAll($sql); foreach ($columnsInfo as $columnInfo) { $column = new Column(); $column->setName($columnInfo['column_name'])->setType($this->getPhinxType($columnInfo['data_type']))->setNull($columnInfo['is_nullable'] === 'YES')->setDefault($columnInfo['column_default'])->setIdentity($columnInfo['is_identity'] === 'YES')->setPrecision($columnInfo['numeric_precision'])->setScale($columnInfo['numeric_scale']); if (preg_match('/\\bwith time zone$/', $columnInfo['data_type'])) { $column->setTimezone(true); } if (isset($columnInfo['character_maximum_length'])) { $column->setLimit($columnInfo['character_maximum_length']); } $columns[] = $column; } return $columns; }