我正在搜索以过滤屏幕上显示的用户。用户的显示在没有搜索的情况下正在工作。但是当我在搜索中输入一个名字,然后去显示它时,我得到一个未定义的搜索变量。
$Search = $request->search_code; //print_r($Search);die(); // this works
// this next line was used for testing and it works as well
//$findTrainers = DB::table('users')->where('users.name', 'like', "%$Search%")->get();
// This is what we want to work, but the search variable is now undefined
$findTrainers = DB::table('users')
->join('bios', function ($findTrainers) {
$findTrainers->on('users.id', '=', 'bios.user_id')
->where('users.name', 'like', "%$Search%");
})
->get();
答案 0 :(得分:3)
这是由于关闭和范围的工作原理。闭包不知道在其作用域之外定义的变量,因此当你想在闭包范围内访问它时,必须告诉闭包使用该变量,如下所示:
$findTrainers = DB::table('users')
->join('bios', function ($findTrainers) use ($Search){
$findTrainers->on('users.id', '=', 'bios.user_id')
->where('users.name', 'like', "%$Search%");
})
->get();