【发布时间】:2017-08-03 09:33:51
【问题描述】:
在 Laravel 中,我有一个允许用户注册的 API。
注册有一个简单的验证电子邮件是唯一的,看起来像这样:
public function register(Request $request) {
$this->validate($request, [
'email' => 'required|email|unique:users|max:255',
'password' => 'required|min:6|max:50',
]);
// create new user and save model
}
不幸的是,我仍然在我的表中发现不少用户的电子邮件重复。
我认为这是因为我的应用有时会快速连续多次发送相同的请求。这意味着两个请求都通过了验证,尽管它们具有相同的电子邮件,因为它们尚未添加到数据库中。
如何解决此问题以确保电子邮件的唯一性?
【问题讨论】:
-
在您的数据库中为您的
email列使用UNIQUE键怎么样?然后,您可以检查您是否收到代码 1062 的 SQL 错误,这表示错误Duplicate Entry <value> for key <xyz> in <abc>。 -
是的,我计划添加一个唯一键,但我希望能够检测和处理错误。我该如何处理你提到的错误。
-
实际插入数据时可以使用
try-catch block: -
但这只会检查任何异常。如何检测该特定异常。
-
更新方法验证呢?
标签: php mysql laravel laravel-5 laravel-validation