Symfony2で、主キーが別のテーブルに基づくエンティティを作成しようとしていますが、データフィクスチャを実行しようとすると次のエラーが発生します。
[Doctrine \ 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と連携させるにはどうすればよいですか?