Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Parâmetros condicionais do criador de consultas


Eu acho que você precisa da condição "e onde" aqui. Ou where significa combinar uma ou outra ou ambas as regras. "E onde" só funcionaria se ambas as regras coincidirem.

Então sugiro tentar isso:
$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();