Laravel 验证 - 检查活动的重复电子邮件

Are*_*eza 3 php laravel laravel-5 laravel-validation

表结构:

users: id  - email - active
Run Code Online (Sandbox Code Playgroud)

active我只想在 0时检查重复的电子邮件。

对于所有电子邮件,我这样做:

'email' => 'required|unique:users|email',
Run Code Online (Sandbox Code Playgroud)

是否可以在验证中定义条件?

小智 6

使用验证器闭包怎么样?

public function store(Request $request)
{
   $this->validate($request, [
       'email' => [
           'required',
           'email',
           function ($attribute, $value, $fail) {
               if (Users::whereEmail($value)->whereActive(0)->count() > 0) {
                   $fail($attribute.' is already used.');
               }
           },
       ]);
   }
}
Run Code Online (Sandbox Code Playgroud)