我在routes / api.php中使用Laravel 5.5 API路由来注册新用户,就像这样...
Route :: post('users /',function(Request $ request){
$user = new User;
if (Input::get('name')) {
$user->name = $request->input('name');
}
if (Input::get('email')) {
$user->name = $request->input('email');
}
if (Input::get('password')) {
$user->name = $request->input('password');
}
$user->save();
Run Code Online (Sandbox Code Playgroud)
)};
但是,如果数据库中已经有一个匹配的电子邮件地址,那么我会收到一条SQL错误,因为该字段设置为唯一。
在尝试将其发送到数据库之前,如何检查电子邮件是否重复?
小智 5
几种方法可以做到这一点。一,使用FormRequests并定义规则:
public function rules()
{
return [
'email' => 'required|unique:users'
];
}
Run Code Online (Sandbox Code Playgroud)
第二,在您的控制器上使用ValidatesRequests特性,并validate在方法中调用:
$this->validate($request, [...rules...])
Run Code Online (Sandbox Code Playgroud)
如果验证失败,它将带错误将用户重定向回去;或者,如果是ajax,请发送带有错误包的json响应。
https://laravel.com/docs/5.5/validation#creating-form-requests
https://laravel.com/docs/5.5/validation#quick-writing-the-validation-logic