Php I';我试图在我的数据库中使用多个过滤器

Php I';我试图在我的数据库中使用多个过滤器,php,mysql,laravel,Php,Mysql,Laravel,我曾尝试实现多个过滤器,但每次我针对一个过滤器进行过滤时,它都会工作,但当针对其他过滤器进行过滤时,查询只接受一个过滤器 我的注册管理员:所有候选人 public函数allCandidates(){ $候选人=新候选人; $querys=[]; $columns=[ “字段”、“资格”, ]; foreach($columns作为$column){ if(request()->has($column)){ $candidates=$candidates->where($column,reque

我曾尝试实现多个过滤器,但每次我针对一个过滤器进行过滤时,它都会工作,但当针对其他过滤器进行过滤时,查询只接受一个过滤器

我的注册管理员:所有候选人

public函数allCandidates(){
$候选人=新候选人;
$querys=[];
$columns=[
“字段”、“资格”,
];
foreach($columns作为$column){
if(request()->has($column)){
$candidates=$candidates->where($column,request($column));
$querys[$column]=请求($column);
}
}
if(request()->has('sort')){
$candidates=$candidates->orderBy('姓氏',request('sort');
$querys['sort']=请求('sort');
}
$candidates=$candidates->paginate(10)->追加($querys);
返回视图('contact.candidates',compact('candidates');

}
重写代码如下:

public function allCandidates(){

        $candidates = new Candidate;

        $columns = [
            'field', 'qualification',
        ];

        foreach ($columns as $column) {
            if (request()->has($column)) {
                $candidates->where($column, request($column));
            }
        }
        if (request()->has('sort')) {
            $candidates->orderBy('surname', request('sort'));
        }
        $candidates->paginate(10);
        return view('contact.candidates', compact('candidates'));
    }

执行一次操作后,无需重新初始化$candidates变量。只需添加筛选器或使用对象$candidates调用另一个函数。

可能值得一看它是否总是空的结果?我只能查询一个筛选器。一旦我尝试查询另一个过滤器,以前过滤的查询就会消失@MasoudHaghbin@RossWilson我要做的是,你只能使用一次where,如果使用多个where,你可以使用一个数组作为where的输入,也可以附加一个orWhere。