2012-06-03 44 views
0

我想在Symfony2中创建一个基于另一个表的主键,但在尝试运行数据夹具时出现以下错误。多个表相同的主键

[学说\ ORM \ ORMException]

类型Ofdan \ SearchBundle \实体\ 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; 

... 

} 

数据夹具我使用域中负荷,应设置域ID,这应该意味着有一个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一起工作?

回答

0

答案就是上面的作品。

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