/** * @dataProvider renameColumnProvider */ public function testRenameColumn($platform, $expectedSql) { $extension = new RenameExtension(); $extension->setDatabasePlatform($platform); $schema = new Schema([new Table('test_table', [new Column('old_column', Type::getType('string'), ['length' => 100])])]); $queries = new QueryBag(); $table = $schema->getTable('test_table'); $extension->renameColumn($schema, $queries, $table, 'old_column', 'new_column'); /** @var MigrationQuery $query */ $query = $queries->getPostQueries()[0]; $this->assertEquals($expectedSql, $query->getDescription()); }
protected function renameOneToManyExtendField(Schema $schema, QueryBag $queries, Table $table, $associationName, $targetEntityClassName, EntityMetadataHelper $entityMetadataHelper) { $entityClassName = $entityMetadataHelper->getEntityClassByTableName($table->getName()); $targetTableName = $entityMetadataHelper->getTableNameByEntityClass($targetEntityClassName); if ($schema->hasTable($targetTableName)) { $targetTable = $schema->getTable($targetTableName); $oldTargetColumnName = sprintf('field_%s_%s_id', strtolower(ExtendHelper::getShortClassName($entityClassName)), $associationName); if ($targetTable->hasColumn($oldTargetColumnName)) { $newTargetColumnName = $this->nameGenerator->generateOneToManyRelationColumnName($entityClassName, $associationName); $oldIndexName = $this->nameGenerator->generateIndexName($targetTableName, [$oldTargetColumnName], false, true); if ($targetTable->hasIndex($oldIndexName)) { $targetTable->dropIndex($oldIndexName); } $oldForeignKeyName = $this->nameGenerator->generateForeignKeyConstraintName($targetTableName, [$oldTargetColumnName], true); if ($targetTable->hasForeignKey($oldForeignKeyName)) { $targetTable->removeForeignKey($oldForeignKeyName); } $this->renameExtension->renameColumn($schema, $queries, $targetTable, $oldTargetColumnName, $newTargetColumnName); $this->renameExtension->addIndex($schema, $queries, $targetTable->getName(), [$newTargetColumnName]); $this->renameExtension->addForeignKeyConstraint($schema, $queries, $targetTable->getName(), $table->getName(), [$newTargetColumnName], $table->getPrimaryKeyColumns(), ['onDelete' => 'SET NULL']); } } }
/** * {@inheritdoc} */ public function up(Schema $schema, QueryBag $queries) { $table = $schema->getTable('oro_tracking_event'); $this->renameExtension->renameColumn($schema, $queries, $table, 'user', 'user_identifier'); }
/** * {@inheritdoc} */ public function up(Schema $schema, QueryBag $queries) { $this->renameExtension->renameColumn($schema, $queries, $schema->getTable('oro_workflow_step'), 'final', 'is_final'); }
/** * {@inheritdoc} */ public function renameColumn(Schema $schema, QueryBag $queries, Table $table, $oldColumnName, $newColumnName) { $this->extendOptionsManager->setColumnOptions($table->getName(), $oldColumnName, [ExtendOptionsManager::NEW_NAME_OPTION => $newColumnName]); parent::renameColumn($schema, $queries, $table, $oldColumnName, $newColumnName); }