Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Validation - Check Active Duplicate Emails

The table structure:

users: id  - email - active

I want check duplicated email only when active is 0.

For all emails,I do this:

'email' => 'required|unique:users|email',

Is it possible to define a condition in the validation?

like image 358
Areza Avatar asked Mar 19 '26 18:03

Areza


1 Answers

What about using validator closure ?

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.');
               }
           },
       ]);
   }
}
like image 140
simonecosci Avatar answered Mar 21 '26 08:03

simonecosci