0

我正在尝试在 Symfony2 中创建一个基于另一个表的主键的实体,但是在尝试运行数据固定装置时出现以下错误。

[学说\ORM\ORM异常]

Ofdan\SearchBundle\Entity\CacheHeader 类型的实体缺少分配的 ID。此实体的标识符生成策略要求在调用 EntityManager#persist() 之前填充 ID 字段。如果您想要自动生成标识符,则需要相应地调整元数据映射。

/**
 * @ORM\Entity
 * @ORM\Table(name="cacheHeader")
 * @ORM\HasLifecycleCallbacks
 */
class CacheHeader
{
    /**
     * @ORM\ManyToOne(targetEntity="Domain", inversedBy="domains")
     * @ORM\JoinColumn(name="domainId", referencedColumnName="id")
     * @ORM\Id
     */
    private $domain;

...

}

我正在使用的数据夹具在域中加载,它应该设置 domainId,这应该意味着有一个 Id。

class CacheHeaderFixtures extends AbstractFixture implements OrderedFixtureInterface
{
    public function load(ObjectManager $manager)
    {
        $cacheHeader1 = new CacheHeader();
        $cacheHeader1->setDomain($manager->merge($this->getReference('bbc-domain')));
        $cacheHeader1->setDate(new \DateTime());
        $cacheHeader1->setPage(10); // CacheHeader::Page_Index
        $cacheHeader1->setHeader('');
        $manager->persist($cacheHeader1);
    }
}

如何让我的 CacheHeader 实体与 domainId 一起使用?

4

1 回答 1

0

答案是上面的作品。

我遇到问题的原因是我有第二个夹具,但在错误的对象上调用了 setDomain。

于 2012-06-03T21:43:52.267 回答