2013-06-28 3 views
1

У меня проблема с установкой сущности в Doctrine 2.3 (с использованием Symfony 2).OneToOne-отношение к двум объектам, реализующим интерфейс

Существует класс «Продукт», который имеет поле «производитель». Теперь этот производитель может либо быть одним человеком (класс «Пользователь»), либо группой (класс «Группа»).

Что я хотел сделать, теперь пользовательский и групповой класс реализует интерфейс «Продюсер», а затем имеет мою файловую карту $ product-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/что-то еще, этот подход будет работать, но при сопоставлении с БД жизнь будет более сложной :-)

Inheritance - это не решение, потому что «Пользователь 'уже расширяет класс «Личность» и не имеет сходства с «Группой», и поскольку в PHP нет такого понятия, как множественное наследование ...

Итак, что было бы чистым решением для этой проблемы?

+0

Дубликат: http://stackoverflow.com/questions/22986318/relation-to-interface-in-doctrine К сожалению, ответа на него нет. –

ответ