您好我有关于如何实现多种用户类型(不使用FOS)的技术问题。我会解释一下我愿意做什么,我想要一些关于可以做得更好的反馈或关于如何做的建议。
我将有4个实体
现在实现的默认值是用户。为了解决问题,我将为组织提供第二个用户提供者,因为它与之前的用户提供商无关。
我想知道如何使用User,Amateur,Profesional帐户。
他们分享大多数基本字段只是为他们提供了额外的信息。他们中的大多数拥有相同的权限。什么是最好的方式呢?
1)将一对一的额外实体添加到用户类 我将向主User类添加一对一的AmateurInformation和ProInformation。并通过单个accountType字段确定帐户类型。 2)用儿童班扩展班级? 我甚至都不知道这样的事情是可能的。另外,我想向Repo提出将返回所有用户类型的请求。
我一直在寻找有关应该注意什么以及如何做到这一点的建议。我希望在我的时候提高自己的知识:)
答案 0 :(得分:1)
在我看来,两个建议的解决方案是可行的(引入类型字段或使用继承),实际上取决于您的情况。
我会避免使用多个独立的类,它只会使它复杂化。
如果与其他数据库条目的关系不合理,则不需要创建单独的类,您可以使用type字段,也可以为不同的用户引入特定的角色(请参阅UserInterface中的getRoles())。
如果您的用户类可以访问不同的东西(与其他实体的关系),我会考虑使用带有学说的单表继承。使用此解决方案,您仍然可以使用一个UserProvider,在代码中可以检查用户对象,还可以使用自定义角色来授予权限:
if ($user instanceOf Amateur)