0

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と連携させるにはどうすればよいですか?

4

1 に答える 1

0

答えは上記の作品です。

問題が発生した理由は、2 番目のフィクスチャがあったが、間違ったオブジェクトで setDomain を呼び出したためです。

于 2012-06-03T21:43:52.267 に答える