Symfony 使用自动策略时设置ID
我正在尝试加载装置,并且有确切的id可供使用,因此代码为:Symfony 使用自动策略时设置ID,symfony,doctrine-orm,doctrine,Symfony,Doctrine Orm,Doctrine,我正在尝试加载装置,并且有确切的id可供使用,因此代码为: foreach ($this->categories as $index=>$category) { $newCategory = new Category(); $metadata = $manager->getClassMetaData(get_class($newCategory)); $metadata->setIdGenerator(new \D
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();
问题是,当我从另一个fixtureProduct加载对这个EntityCategory的引用时,我能够获得我要寻找的id。但是,将产品映射到类别失败,如果我排除映射到类别,数据库仍将填充自动生成的id值。因此,错误代码是:
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`))
在我看来,不知何故,我使用了两个不同的id:一个是我在上面的代码中定义的包含id的id,另一个是由IdGenerator生成的id
中也描述了此问题,但不幸的是,两种解决方案都没有帮到我。您确定嵌套的三元语句给出了正确的值吗?如果您所做的只是导入类别,那么您是否在数据库中获得了预期的id?是的,当然。不管将传递给setId的是什么。