我在使用表单
过滤信息时遇到问题这是我的代码
$cooperation = Cooperation::with('user')->get();
$search_results = [];
$search = Input::get('q');
$category = Input::get('c');
$land = Input::get('l');
if(!empty($search || $category || $land)){
$search_results = $cooperation;
if (!empty($search)){
$search_results = $search_results->where('title', 'like', '%'. $search .'%');
}
if (!empty($category)){
$search_results = $search_results->where('category', $category);
}
if (!empty($land)){
$search_results = $search_results->where('land', $land);
}
$exist_s = true;
$not_s = false;
return view('cooperation.index', compact('cooperation', 'search_results', 'exist_s', 'not_s'));
}
else{
$not_s = true;
$exist_s = false;
return view('cooperation.index', compact('cooperation', 'search_results', 'exist_s', 'not_s'));
}
从表单中检索数据后,我试图按顺序通过数组过滤每个变量,但没有任何反应,唯一有效的是过滤$ category但我不知道为什么其余的不起作用。
我正在寻找一个如何有效过滤数据的解决方案,如果if()在if()之后,我可以做到,但是如果有更多变量,那将是一个非常低效的解决方案。
如果有人事先有任何想法,谢谢你。
答案 0 :(得分:0)
我不知道你的请求为什么不起作用。但是,如果您正在寻找一种过滤结果的通用方法,我相信一个带有过滤器变量数组的简单foreach循环可以解决这个问题:
$filters = []; //your variables such as category and land go in there
foreach ($filters as $column => $value){
$search_results = $search_results->where($column, $value);
}
答案 1 :(得分:0)
如果您希望根据您的要求进行有效搜索,可以使用以下输入变量:
$columns, $searchColumns, $search_operator, $search_input
$columns
可以是您可以订购的列,searchColumns
可以是您希望进行搜索的列,search_operator
可以是like
,{{ 1}},<
,<=
,in
,>
等,您甚至可以使用>=
作为direction
或{{1在值中,所以你可以这样:
asc