diff --git a/lib/Cake/Database/Schema/MysqlSchema.php b/lib/Cake/Database/Schema/MysqlSchema.php index 3897539c5cb..cbb574394c2 100644 --- a/lib/Cake/Database/Schema/MysqlSchema.php +++ b/lib/Cake/Database/Schema/MysqlSchema.php @@ -279,17 +279,7 @@ public function constraintSql(Table $table, $name) { $out = 'UNIQUE KEY '; } $out .= $this->_driver->quoteIdentifier($name); - - $columns = array_map( - [$this->_driver, 'quoteIdentifier'], - $data['columns'] - ); - foreach ($data['columns'] as $i => $column) { - if (isset($data['length'][$column])) { - $columns[$i] .= sprintf('(%d)', $data['length'][$column]); - } - } - return $out . ' (' . implode(', ', $columns) . ')'; + return $this->_keySql($out, $data); } /** @@ -308,7 +298,17 @@ public function indexSql(Table $table, $name) { $out = 'FULLTEXT KEY '; } $out .= $this->_driver->quoteIdentifier($name); + return $this->_keySql($out, $data); + } +/** + * Helper method for generating key SQL snippets. + * + * @param string $prefix The key prefix + * @param array $data Key data. + * @return string + */ + protected function _keySql($prefix, $data) { $columns = array_map( [$this->_driver, 'quoteIdentifier'], $data['columns'] @@ -318,7 +318,7 @@ public function indexSql(Table $table, $name) { $columns[$i] .= sprintf('(%d)', $data['length'][$column]); } } - return $out . ' (' . implode(', ', $columns) . ')'; + return $prefix . ' (' . implode(', ', $columns) . ')'; } }