laravel多字段搜索表单

时间:2016-07-05 13:00:05

标签: laravel laravel-5

在我的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'));
}

1 个答案:

答案 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'));
}

这样,您可以获得所需的所有结果,具体取决于您收到的输入。