我有两种类型的用户——真实的和假的。
假用户是不使用系统的员工。
真实用户使用他们的电子邮件地址登录。所以我的用户迁移有$table->string('email')->unique();
.
问题是假用户可能没有电子邮件地址。我可以添加第一个假用户,没有问题,但第二个会生成错误SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'users_email_unique'
.
我应该怎么办?
听上去像users_email_unique
是你的主键。这意味着当您插入第一个具有空白电子邮件地址的假用户时,空白条目将被视为唯一条目。当输入第二个空白条目时,它违反了实体完整性(重复的主键)。
users_email_unique unique?
_________________ _______
[email protected] /cdn-cgi/l/email-protection yes
blank yes
blank no
如果您想要多个空白条目,您可以允许users_email_unique
to be null
但是,主键列不能包含null values http://www.w3schools.com/sql/sql_primarykey.asp:
users_email_unique unique?
__________________ ________
[email protected] /cdn-cgi/l/email-protection yes
NULL yes
NULL yes
如果您正在使用users_email_unique
作为您的主键,正如评论中指出的,您可能需要:
- 为“假”用户临时生成一封随机的唯一电子邮件
- 重新考虑表的主键(也许是某种形式的唯一 ID?)
- 也许分为两张表,一张用于“真实”用户,一张用于“假”用户
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)