在我的Laravel 5.2应用程序中有一个多字段搜索表单
price
rooms
type
rent
我有一些错误我的结果没有正确我认为因为我使用orWhere()。我希望输入字段之间的AND。我想要任何解决方案
public function search()
{
$un_price = \Request::get('un_price');
$un_rooms = \Request::get('un_rooms');
$un_type = \Request::get('un_type');
$un_rent = \Request::get('un_rent');
$units = DB::table('units')->whereIn('un_status', [1])
->where('un_price','like','%'.$un_price.'%')
->orWhere("un_rooms", "LIKE", "%$un_rooms%")
->orWhere("un_type", "LIKE", "%$un_type%")
->orWhere("un_rent", "LIKE", "%$un_rent%")
->paginate(20);
return view('home.units.show', compact('units'));
}
答案 0 :(得分:2)
使用查询字符串过滤。做这样的事情:
public function search(Request $request)
{
$unit = (new Unit)->newQuery(); //where Unit is the model
if($request->has('un_price'){
$unit->where('un_price',$request->un_price)
}
if($request->has('un_rooms'){
$unit->where('un_rooms',$request->un_rooms)
}
//go on until the end
$units = $unit->get();
return view('home.units.show', compact('units'));
}
这样,您可以获得所需的所有结果,具体取决于您收到的输入。