dulan
dulan

Reputation: 1604

Laravel validator check existence for multiple fields

I'm creating a user login form where user can use his/her username or email to login with Laravel, so on the backend, I want to validate if the user input is either an existed username or an existed email address, something like

    $validator = Validator::make(
        array('username_or_email' => $username_or_email),
        array('username_or_email' => 'exists:users,username|exists:users,email)
    );

but I doubt the above is the correct syntax for it, so how should I write my validator?

Upvotes: 0

Views: 1019

Answers (1)

Marcin Nabiałek
Marcin Nabiałek

Reputation: 111829

Assuming you don't allow @ in username you could do it this way:

if (strpos($username_or_email, '@') === false) {
   $rule = 'exists:users,username';
}
else {
   $rule = 'exists:users,email;
}


$validator = Validator::make(
        array('username_or_email' => $username_or_email),
        array('username_or_email' => $rule)
    );

Upvotes: 1

Related Questions