Laravel API注册用户-检查重复的电子邮件

fig*_*r20 2 laravel

我在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

  • 您是否在控制器的register方法顶部使用它?`公共功能寄存器($ request){$ this-> validate($ request,[rules array]); ...}` (2认同)