多个表的相同主键

时间:2012-06-03 21:25:05

标签: symfony doctrine-orm

我正在尝试在Symfony2中创建一个基于另一个表的主键,但是在尝试运行数据夹具时遇到以下错误。

  

[学说\ ORM \ ORMException]

     

类型为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一起使用?

1 个答案:

答案 0 :(得分:0)

答案是上述作品。

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