Laravel 5 provide great feature as model relationship. but if you need to use where clause on your relation model then how you can do it?, You can make where condition using whereHas function. it doesn’t matter which relation you used like one to one, one to many, many to many, has many through etc.
Sometime might be you need to add where condition with your relation model then you can simply use whereHas() as i provide bellow example with laravel 6, laravel 7, laravel 8, laravel 9 and laravel 10 app.
Several days ago i had same situation when i used laravel relationship. need to use where condition like i need to get those users that country is “India”. so i write condition like as bellow example:
Example:
$users = User::whereHas('countries', function($q){
$q->where('name', '=', 'India');
})->get();
dd($users);
You can also pass dynamic variable inside the whereHas() like this way:
Example 2:
Read Also: Laravel – Comment System Tutorial from Scratch
$search = 'India';
$users = User::whereHas('countries', function($q) use($search){
$q->where('name', '=', $search);
})->get();
dd($users);
I hope it can help you….