我正在尝试在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一起使用?
答案 0 :(得分:0)
答案是上述作品。
我遇到问题的原因是我有第二个夹具,但在错误的物体上调用了setDomain。