From Laravel 5.3+ you can add a custom where clause to the exists and unique rules.
Here is my scenario: I have an email verification table and I want to ensure that a passed machine code and activation code exist on the same row.
Be sure to use Illuminate\Validation\Rule;
$activationCode = $request->activation_code;
$rules = [
'mc' => [
'required',
Rule::exists('email_verifications', 'machineCode')
->where('activationCode', $activationCode),
],
'activation_code' => 'required|integer|min:5',
'operating_system' => 'required|alpha_num|max:45'
];
The first argument in the exists method is the table and the second is the custom column name I’m using for the ‘mc’ field. I pass the second column I want to check in a where clause.
This is pretty handy, because now I no longer need a custom Validation rule.