Ruka Xing
Ruka Xing

Reputation: 642

Laravel validation by database records

Problem is how to validate by Database model, I have model "Emails". I just want to people can register if their email already in our Email model.

Email database table

Schema::create('emails', function (Blueprint $table) {
        $table->increments('id');
        $table->text('username')->nullable();
        $table->text('fullname')->nullable();
        $table->text('description')->nullable();
        $table->text('email')->nullable();
        $table->timestamps();
});

Auth@RegisterController

protected function validator(array $data)
{
    return Validator::make($data, [
        'name'     => 'required|max:255',
        'email'    => 'required|max:255|unique:users',         here i guess
        'password' => 'required|min:6|confirmed',
    ]);
}**strong text**

Upvotes: 4

Views: 9434

Answers (2)

rkj
rkj

Reputation: 8287

You have to use unique validation for unique email in users table and exists validation to check email exists in emails table.

protected function validator(array $data)
{
    return Validator::make($data, [
        'name'     => 'required|max:255',
        'email'    => 'required|max:255|unique:users|exists:emails',  
        'password' => 'required|min:6|confirmed',
    ]);
}

Assuming you have email field in both users and emails tables

Upvotes: 5

Adam Kozlowski
Adam Kozlowski

Reputation: 5896

Did u try RULE-EXISTS?

exists:table,column

The field under validation must exist on a given database table.

More: https://laravel.com/docs/5.6/validation#rule-exists

Upvotes: 1

Related Questions