这是我的print_r($_POST)
的输出
array([id] => '123', [name] => '', [place] => '', [color] => '')
其中name
、place
、color
为用户.....提交的可选字段用户可以只选择name
, place
或color
, name + color
, color + place
,或三个name + color + place
。
如何为用户选择的这些选项设置where
条件?例如,在Laravel中,我们使用以下语句选择DB表…
$Select_db = Db::table('mytable')
->where('name', Input::get('name'))
->where('place', Input::get('place'))
->where('color', Input::get('color'))
->select()
->get();
正如你所看到的,只有当用户的所有字段都有输入时,上面的条件才有效,基于用户输入,我想添加where
条件,我们如何解决这个问题??
注意:在这个特殊的场景中,我知道我可以为每个条件使用isset()
。但是,如果有许多可选输入呢?
试试这个:-
$Select_db = DB::table('mytable');
if (Input::get('name') != "")
$Select_db->where('name', Input::get('name'));
if (Input::get('place') != "")
$Select_db->where('place', Input::get('place'));
if (Input::get('color') != "")
$Select_db->where('color', Input::get('color'));
$result = $Select_db->get();
如果有多个列要匹配,然后尝试使用这个:-
$Select_db = DB::table('mytable');
foreach($_POST as $key => $val){
if(Input::get($key) != ""){
$Select_db->where($key, Input::get($key));
}
}
$Select_db->get();
$Select_db = Db::table('mytable');
foreach($_POST as $key => $val) {
$Select_db->where($key, Input::get($key));
}
$Select_db->query()->get();
可以考虑复制$_POST
并在输入foreach
之前删除不需要的值:
unset($postcopy['badvar'])
public function filter(Request $request)
{
$first_name = $request->input('first_name');
$sur_name = $request->input('sur_name');
$email_work = $request->input('email_work');
$country = $request->input('country');
$position = $request->input('position');
$event_id = $request->input('event_id');
$event_name = $request->input('event_name');
$nature_of_business = $request->input('nature_of_business');
$mobile_number = $request->input('mobile_number');
$event_date = $request->input('event_date');
$record = DB::table('exceldatas');
if ($request->has('first_name')){
$record->where('first_name', $first_name);
}
if ($request->has('sur_name')) {
$record->where('sur_name', $sur_name);
}
if ($request->has('email_work')) {
$record->where('email_work', $email_work);
}
if ($request->has('country')) {
$record->where('country', $country);
}
if ($request->has('event_name')) {
$record->where('event_name', $event_name);
}
if ($request->has('nature_of_business')) {
$record->where('nature_of_business', $nature_of_business);
}
if ($request->has('mobile_number')) {
$record->where('mobile_number', $mobile_number);
}
if ($request->has('event_date')) {
$record->where('event_date', $event_date);
}
$record =$record->paginate(15);
return view('showresult')->with('record', $record);
}