FOS 用户bundle的最佳继承策略



我想使用FOS USerBundle,但我有不同类型的用户(学生,教师,主任等)可以登录我的应用程序。然后,每个属性都有不同的属性,每个属性都是唯一的。

如我所见,我有一些选择:

选项 1 - 让一个用户实体继承 FOS\UserBundle\Entity\User(并在 config.yml 中设置为 FOS UserBundle 的user_class),其中不同类型用户的所有属性都按 ROLE 区分。 我特别不喜欢这个选项,因为每次用户登录系统时,用户实体都会有很多 null 属性(只有记录类型的用户的属性会有值,其余的属性(几乎在那里)将未使用。

选项 2 - 要让用户实体继承 FOS\UserBundle\Entity\User(并在 config.yml 中设置为 FOS UserBundle 的user_class),请为应用程序中的每个参与者(学生、教师、主管等)创建一个实体,与用户实体具有一对一的关系。 这样,每次用户登录时,我都可以说:$logguedUser->getStudent()或$logguedUser->getTeacher()等,具体取决于登录的用户类型。

选项 3 - 要让用户实体继承 FOS\用户捆绑包\实体\用户,请为应用程序中的每个参与者(学生、教师、主管等)创建一个实体,并且每个实体都继承自用户。这是我在理论上看到的更好的选项,但我无法弄清楚如何实现它,因为我需要说配置女巫中的 FOS UserBundle 是user_class,我会有一些(学生、客户、主任等)。当参与者登录应用程序时,我将记录哪个对象?

没有人有更好的选择,或者实施第三个的方法,或者可能支持一个?德克萨斯

第一个选项是针对懒惰的程序员,第三个选项不好,因为你没有太大兴趣按用户类型区分访问,你还需要过度配置。

我个人支持2,因为继承不能解决所有问题,不断发展的应用并不意味着学生不能成为老师,或者可能有其他角色(或多个角色),然后继承成为一个笼子,你可以做一些一对一的关系,教义会做剩下的。

有一个选项 4 :)原则仍然允许一些关于继承映射的解决方案,如果你想使用继承,单表继承可以为你做

最新更新