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には多重継承などがないため、継承は解決策ではありません...
では、この問題のクリーンな解決策は何でしょうか?