I'm trying to load fixtures, and have exact id' to work with, so the code is:
foreach ($this->categories as $index=>$category) {
$newCategory = new Category();
$metadata = $manager->getClassMetaData(get_class($newCategory));
$metadata->setIdGenerator(new \Doctrine\ORM\Id\AssignedGenerator());
$newCategory->setId($index == 6 ? self::SOME_ID : ($index == 7 ? self::SOME_OTHER_ID : $index + 1));
$manager->persist($newCategory);
$this->setReference('CategoryRef-'.$index, $newCategory);
}
$manager->flush();
The thing is, that, when I'm loading reference to this Entity(Category
) from another fixture(Product
), I'm able to get id
I'm looking for. But, mapping Product
with Category
fails and in case I'll exclude mapping to Category
- the database will be still populated with auto-generated id
values. So, the error code is:
Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`database`.`product`, CONSTRAINT `FK_D34A04AD12469DE2` FOREIGN KEY (`category_id`) REFERENCES `category` (`id`))
It seems to me, that somehow, I'm working with 2 different id
's: one - containing id
I'm defining in code above, and the second one - generated by IdGenerator
.
This question was also described in question, but, unfortunately, neither one solution had helped me.