Symfony 使用自动策略时设置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

我正在尝试加载装置,并且有确切的id可供使用,因此代码为:

    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的是什么。