You need whereHas . A few of them.
$users = User::whereHas('skills', function($q){ $q->where('skill_id', 1); $q->where('level', '>', 44); })->whereHas('skills', function($q){ $q->where('skill_id', 2); $q->where('level', '>', 55); })->whereHas('skills', function($q){ $q->where('skill_id', 3); $q->where('level', '>', 67); })->get();
I assume the values ββare dynamic, so this should simplify it:
$requirements = array('1' => 40, '2' => 55, '3' => 67); $users = User::query(); foreach($requirements as $id => $value){ $users->whereHas('skills', function($q) use ($id, $value){ $q->where('skill_id', $id); $q->where('level', '>', $value); }); } $users = $users->get();
source share