2012-01-29 27 views
0

事情是这样的:Doctrine2中没有类别别名吗?

user: 
    targetEntity: User 
    inversedBy: posts 
    joinColumn: 
    name: user_id 
    referencedColumnName: id 
deleter: 
    targetEntity: User 
    joinColumn: 
    name: deleter_id 
    referencedColumnName: id 

上面我们有两个关系类用户,我在想,如果我们能这样做targetEntity:缺失者为用户

+0

为什么你需要定义一个类别别名?直接引用用户很好。 – Ocramius 2012-01-29 22:35:56

+0

@Ocramius,因为当两个实体之间有多个关系时,实体生成器会感到困惑 – DavidW 2012-01-30 05:34:29

+0

不要多次使用实体生成器,它没有意义,只会带来混乱,再加上它不是一个好的模式发展。实体生成仅用作快速入门的指南。之后,你应该单独编写你的代码。映射应该遵循实体,而反过来是错误的。 – Ocramius 2012-01-30 16:45:14

回答

1

所以,你想删除器是用户?在这种情况下,你可能会去找Single Table Inheritance。你只需要添加一个鉴别器列。

用于建模角色的另一种常见方法是用户在应用程序中可能具有user_type表或类似表。然后定义一个多对多的列出每个用户具有哪些角色。通常情况下,这些都与特权相关联,并且必须在所述角色之间建立层次关系,但这是一种总体概括。

+0

我很欣赏你的回复。我的问题稍有不同,我只需要实体生成器(symfony2)来识别相关实体的名称。对于“删除”它创建了错误的setter/getters,我认为别名会帮助解决这个问题,但它可能只是实体生成器中的一个错误。 – DavidW 2012-01-30 07:19:59

+0

嗯,我没有在sf2中使用实体生成器或yml方法。我已经手动编写了所有实体,并在我的项目中使用了注释。也许可以通过邮件列表或IRC联系sf2人员,并让我们知道您是否找到答案;对不起,我没有帮助。 – quickshiftin 2012-01-30 14:33:32