为什么我不能在这个雄辩的数据库调用方法中访问我的变量?

时间:2016-05-10 08:48:15

标签: php laravel eloquent

我正在尝试在我的laravel应用中构建搜索功能。我想搜索与我的循环的数据透视表相关的标记的名称。但是我收到错误'未定义的变量:query'

这是我的控制器方法:

public function search($query) {

    $searchResult = Loop::whereHas('tags', function ($q) {
                $q->where('name', 'LIKE', '%'. $query .'%');  
            })->get(); 

    return Response::json($searchResult);
}

1 个答案:

答案 0 :(得分:4)

您应该将$query变量传递到use()的闭包中,如下所示:

$searchResult = Loop::whereHas('tags', function ($q) use ($query) {
            $q->where('name', 'LIKE', '%'. $query .'%');  
        })->get(); 

http://php.net/manual/en/functions.anonymous.php(查看示例#3)