OneToOne-与实现接口的两个实体的关系

时间:2013-06-28 11:22:26

标签: symfony orm doctrine-orm

我在Doctrine 2.3中使用实体设置有问题(使用Symfony 2)。

有一个类'产品'有一个字段'生产者'。 现在这个制作人可以是一个人(类'用户')或一个组(类'组')。

我想要做的是,现在让User-和Group-class实现一个接口'Producer',然后让我的$ producer-Field映射到Producer-interface。

/**
 * @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 /无论什么,这种方法都可行 - 但是当映射到数据库时,生活更复杂: - )

继承不是一个解决方案,因为'User'已经扩展了'Person'类,与'Group'没有相似之处,因为在PHP中没有多重继承......

那么,对于这个问题,什么是一个干净的解决方案?

1 个答案:

答案 0 :(得分:1)

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

此文档应该对您有所帮助。不确定这是您问题的正确答案