DDC-993: Cookbook: Overriding the ID Generator during a database migration #5529

Open
doctrinebot opened this Issue Jan 19, 2011 · 2 comments

2 participants

@doctrinebot

Jira issue originally created by user felicitus:

If you need to override the ID Generator, e.g. during a migration, you can do that in your migration script as follows:

{panel:title=Overriding the ID generator}
$em->getClassMetadata('foo\bar\Entity')->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator());
$em->getClassMetadata('foo\bar\Entity')->setIdGeneratorType(constant('Doctrine\ORM\Mapping\ClassMetadata::GENERATORTYPENONE'));
{panel}

Make sure that both calls equal to the same generator type. You can now modify the @Id fields in your entities. Additionally, make sure that you set the IdGenerator after you created the database using e.g. SchemaTool->create().

@doctrinebot

Comment created by kosen:

Hi, this doesn't seem to work for me. I have written a small database export / import utility. As long as I use the automatic ID generation, everything works flawlessly, but I'm trying to preserve the existing IDs. I do exactly what you've suggested in your post. It works for @OneToOne relations, but I get the following error messages when persisting entities that are parts of @ManyToOne relations:
Notice: Undefined index: [....] in [...]Doctrine/ORM/UnitOfWork.php on line 2655
I'm using version 2.2.2
Am I doing something wrong?

@doctrinebot

Comment created by kosen:

Never mind. I've upgraded to Doctrine 2.3.0 and it works as expected.

@beberlei beberlei was assigned by doctrinebot Dec 6, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment