我App\Entity\User上课。我想创建一个新用户,但是没有一个电子邮件地址。但是在我的User类中,电子邮件是唯一的,不能为null。这意味着我必须创建一个名为TransUser的新User类。现在,我希望能够将此类作为与App \ Entity \ User类相同的类,但不包含email-列,或者至少具有不唯一且可以为null的email列。在PHP中使用Symfony做到这一点的最佳方法是什么?
3 回答

偶然的你
TA贡献1841条经验 获得超3个赞
您可以修改User
班级以允许使用空电子邮件地址。(UNIQUE
仍然允许这样做)。
但是,在注册/验证/登录上,您最终必须区分不同的用户类型。
此解决方案是类扩展(或单表继承)。但是在某个地方,您可能会有一个准鉴别符列。; o)
显然,优点是您可以拥有一个用户表,这使所有引用/外键更加容易。

慕码人2483693
TA贡献1860条经验 获得超9个赞
您可以根据需要为用户提供尽可能多的类,只需在提供者部分的security.yaml中将此新类定义为用户提供者,例如,可以在常规用户旁边拥有后端用户。这就是您security.yaml中的提供者部分的样子
providers:
backend_users:
entity:
class: App\Entity\BackendUser
users:
entity:
class: App\Entity\User
依此类推,您可以在这里找到更多有关它的信息。如果要限制到达某些路由的用户类型并为每个防火墙添加提供者密钥,则需要更新防火墙部件
main:
logout:
path: app_logout
anonymous: true
provider: backend_users
guard:
#....
- 3 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消