/** * {@inheritdoc} */ public function addUniqueIndex(array $columnNames, $indexName = null, array $options = []) { if (!$indexName) { $indexName = $this->nameGenerator->generateIndexName($this->getName(), $columnNames, true); } return parent::addUniqueIndex($columnNames, $indexName, $options); }
/** * Create an unique index without check of table and columns existence. * This method can be helpful when you need to create an index for renamed table or column * * @param Schema $schema * @param QueryBag $queries * @param string $tableName * @param string[] $columnNames * @param string|null $indexName */ public function addUniqueIndex(Schema $schema, QueryBag $queries, $tableName, array $columnNames, $indexName = null) { if (!$indexName) { $indexName = $this->nameGenerator->generateIndexName($tableName, $columnNames, true); } $index = new Index($indexName, $columnNames, true); $diff = new TableDiff($tableName); $diff->addedIndexes = [$indexName => $index]; $renameQuery = new SqlMigrationQuery($this->platform->getAlterTableSQL($diff)); $queries->addQuery($renameQuery); }
public function testEncodedUniqueIndexNameIsTheSameAsDoctrineDefault() { $tableName = 'tbl123456789012345'; $columnName = 'clmn1234567890'; $table = new Table($tableName, [new Column($columnName, Type::getType('string'))]); $table->addUniqueIndex([$columnName]); $indices = $table->getIndexes(); $doctrineResult = array_pop($indices)->getName(); $generator = new DbIdentifierNameGenerator(); $result = $generator->generateIndexName($tableName, [$columnName], true); $this->assertEquals($doctrineResult, $result); }