Вы получаете ошибку?Когда вы говорите, что это не работает, что конкретно не работает?Являются ли данные, которые он возвращает, неверными?
Кроме того, как выглядит содержимое массивов $directors
и $genres
?Они просто массив заполнен идентификаторами?Если да, вы можете попробовать выполнить условия whereIn
вместо того, чтобы перебирать все элементы:
public function scopeFilter($query)
{
$directors = request('director')[0];
$genres=request('genre')[0];
// Assuming they look like this:
// $directors = [1,2,3];
// $genres = [4,5,6];
if (isset($directors) && count($directors)) {
$query->whereIn('director', $directors);
}
else if(isset($genres) && count($genres)) {
$query->whereIn('genre', $genres);
}
return $query;
}