【发布时间】:2015-08-13 09:22:28
【问题描述】:
我有两种类型的用户 - 真实的和虚假的。
假用户是不使用系统的员工。
真实用户使用他们的电子邮件地址登录。所以我的用户迁移有$table->string('email')->unique();。
问题是假用户可能没有电子邮件地址。我可以添加第一个假用户没问题,但第二个会产生错误SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '' for key 'users_email_unique'。
我该怎么办?
【问题讨论】:
-
将假用户插入为 NULL,这是因为 mysql 将 NULL 值视为 unqiue
-
你为什么不做两张像
tblrealUsers和tblfakeUsers这样的表? -
如果您要让多个用户使用“”电子邮件,则电子邮件字段不能是唯一的。你必须删除限制或使用任何“棘手”的解决方案,例如:“fakeXX@fake.com”是 XX 用户 ID。
-
@Mihai 真的吗?但它是如何工作的?
-
如果您使用 orm,您应该希望与数据库无关,并且使用 null 不是一个好主意,原因有很多,首先是只有 mysql 是愚蠢的。从恩里克那里得到答案,让我忍住了 xD