我在表单视图中创建了一个包含多个参数的搜索功能。
在我的表格中,我有:
选择竞赛框
DATE_FIELD
为团队1选择框,为团队2选择另一个框。
我想例如只搜索比赛或仅搜索日期或仅搜索团队1或2.我的实际查询如果我不发送所有参数,我得不到任何结果。
有人知道如何实现这一目标吗?
这是控制器:
public function getRencontres(Request $request){
$compet = Compet::pluck('lb_compet' , 'id');
$equipe = Equipe::pluck('lb_equipe' , 'id');
$date_rencontre = $request->input('dt_rencontre');
$search = $request->input('compet_id');
if ($search) {
$query = Rencontre::where(function($q) use($search , $equipe , $date_rencontre) {
$q->where('compet_id', '=', $search)
->where('equipe_domicile_id' , '=' , $equipe)
->where('equipe_visiteur_id' , '=' , $equipe)
->where('dt_rencontre' , '=' , $date_rencontre);
});
}else {
$query = Rencontre::select();
}
$rencontres = $query->orderBy('dt_rencontre', 'DESC')->paginate(10)
->appends(['recherche' => $search]);
return view('rencontres/index' , compact('rencontres' , 'compet' , 'equipe'));
}
答案 0 :(得分:1)
目前还不清楚您尝试做什么,但我认为您确实在查询构建器上寻找when
方法:
$query = Rencontre::query();
$filters = [
'equipe_domicile' => 'equipe_domicile_id',
'equipe_visiteur' => 'equipe_visiteur_id',
'dt_rencontre' => 'dt_rencontre',
'compet_id' => 'compet_id',
];
foreach ($filters as $key => $column) {
$query->when($request->{$key}, function ($query, $value) use ($column) {
$query->where($column, $value);
});
}
即使这不是你所追求的,也应该让你走上正轨。