PHP 闭包函数应用
//通过ajax请求,后台接收数据
$userType= post('type',0);
$course = post('course');
$period = post('period');
$keyword= post('keyword');
//使用闭包函数来传递参数、查询数据
$query = (new User())->newQuery();
//筛选阶段、课程名称
if($course != 0){
//课程名称
if(strstr($course,'_')){
$courseId= explode('_', $course)[1];
$query->whereIn('id', function ($query) use ($courseId){
$query->select('user_id')
->from('dapeng_user_period')
->where('course_id', $courseId);
});
}
else{ //阶段
$levelId = $course;
$query->whereIn('id', function ($query) use ($levelId){
$query->select('user_id')
->from('dapeng_user_period')
->whereIn('course_id', function ($query) use ($levelId){
$query->select('id')
->from('dapeng_courses')
->where('level_id',$levelId);
});
});
}
}
//模糊搜索
if($keyword != ''){
$query->Where(function ($query) use($keyword){
$query->where('name', 'like', '%'.$keyword.'%');
$query->OrWhere('qq', 'like', '%'.$keyword.'%');
$query->OrWhere('phone', 'like', '%'.$keyword.'%');
});
}
$users = $query->orderBy('id', 'desc')
->paginate(self::PER_PAGE_NUM, $page);
return ['users'=> $this->makePartial('list_user',['users' => $users,'ischecked' => false]),
'total' => $users->total()];
}