Laravel 查询生成器未使用 get 方法中的变量

Laravel query builder not using variable from get method

我的一个控制器中有这个功能。

public function tourList($country, $category)
{
    $tour = Tour::whereHas('country', function($q) {
                    $q->where('name','=', $country);
                })
                ->whereHas('category', function($r) {
                    $r->where('name','=', $category);
                })
                ->get();

    return view('tour-list.blade.php')->withTour('$tour');
}

尽管从 get 方法传递了两个变量。但是我收到

的错误
Undefined variable: country

您在匿名函数中缺少 use,因此您的查询将是:

$tour = Tour::whereHas('country', function($q) use($country) {
                $q->where('name','=', $country);
            })
            ->whereHas('category', function($r) use($category) {
                $r->where('name','=', $category);
            })
            ->get();

Docs