Tôi nghĩ bạn cần điều kiện "và ở đâu" ở đây. Hoặc ở đâu có nghĩa là phù hợp với một hoặc một hoặc khác hoặc cả hai quy tắc. "Và ở đâu" sẽ chỉ hoạt động nếu cả hai quy tắc phù hợp.
Vì vậy, tôi khuyên bạn nên thử điều này:
$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();