1

Doctrine 2.3 (Symfony 2 を使用) でのエンティティのセットアップに問題があります。

フィールド「プロデューサー」を持つクラス「製品」があります。現在、このプロデューサーは、個人 (クラス 'User') またはグループ (クラス 'Group') のいずれかです。

私がやりたかったことは、User クラスと Group クラスにインターフェイス「Producer」を実装させ、$producer-Field を Producer インターフェイスにマップさせることです。

/**
 * @var Producer
 * @ORM\OneToOne(targetEntity="..\..\Entity\Producer")
 */
private $producer;

ただし、これは次のメッセージで失敗します。

"Column name `id` referenced for relation from ..\..\Entity\Product towards 
..\..\Entity\Producer does not exist.

考え直した後、これは明らかなように思えますが、どうすれば問題を解決できるのか疑問に思っています。永続性を使用する必要がなく、PHP/Java/何でも使用する必要がある場合、このアプローチは機能しますが、DB にマッピングする場合、人生はより複雑になります:-)

「ユーザー」はすでにクラス「人」を拡張しており、「グループ」との類似性がなく、PHPには多重継承などがないため、継承は解決策ではありません...

では、この問題のクリーンな解決策は何でしょうか?

4

1 に答える 1

1

http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html

このドキュメントが役に立ちます。それがあなたの問題に対する正しい答えかどうかわからない

于 2013-08-15T13:49:26.787 に答える