You can use the when Builder method to conditionally add constraints:
public function show(Request $request, Film $film): View
{
$tags = $request->tags;
$films = Film::query()
->when($request->get('tags'), function ($builder, $tags) {
$builder->whereHas('tags', fn ($query) => $query->whereIn('id', $tags), '=', count($tags));
})
->when($request->filled(['genre', 'actors', 'year', 'age', 'director', 'time', 'country']), function ($builder) use ($request) {
$builder->getFilmBySearch($request);
})
->paginate(20)
->withQueryString();
return view('films.tagresult', ['films' => $films]);
}