Saya pikir Anda membutuhkan kondisi "dan di mana" di sini. Atau di mana berarti cocok dengan salah satu atau yang lain atau kedua aturan. "Dan di mana" hanya akan berfungsi jika kedua aturan cocok.
Jadi saya sarankan mencoba ini:
$users = User::with('skills')
->with('skills')
->with('positions');
if($skills)
{
$users->whereHas('skills', function($thisquery) use ($skills)
{
$thisquery->whereIn('name', $skills);
});
}
if($positions)
{
$users->whereHas('positions', function($thisquery) use ($positions)
{
$thisquery->whereIn('name', $positions);
});
}
$users = $users->get();