我有用户表,其中包含有关用户及其角色的信息,所以这里唯一的是 'email'、'role_id'、'phone' 组合在一起,所以电子邮件可以重复但如果 role_id 和电话号码重复则不能重复,这是因为用户可以是客户,即role_id=1,或者他的帐户是企业帐户,即role_id=2,但是如果该客户需要重置其客户密码或企业帐户密码怎么办?我怎样才能做到这一点?桌子 Schema::create('users', function (Blueprint $table) { $table->engine = 'InnoDB'; $table->increments('id'); $table->string('fname'); $table->string('lname'); $table->boolean('role_id')->default(1); $table->string('phone'); $table->string('email'); $table->unique(['email', 'role_id','phone']); $table->string('password'); $table->boolean('status')->default(1); $table->rememberToken(); $table->timestamp('email_verified_at')->nullable(); $table->timestamps(); });
1 回答
四季花海
TA贡献1811条经验 获得超5个赞
好的解决方案是添加一个新的关系表,例如 user_role (user_role.user_id, user_role.role_id) 并使用一个唯一字段(电子邮件或电话)创建索引。
但是您需要在登录表单或其他地方添加角色的下拉列表。或更改“访问权限”。例如,如果用户具有客户角色和业务角色,您可以让他访问这两个角色的所有功能。
另一种解决方案是在密码重置表单中添加角色下拉列表...
另一种解决方案是为所有用户行重置密码。这样,用户可以通过电子邮件更改角色进行登录
- 1 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消
