根据价格过滤laravel

时间:2017-08-07 00:59:43

标签: php laravel

我想知道如何在我的申请中进行价格过滤?

我正在使用laravel 5.4

我目前有这样的事情:

<form class="form-inline" action="{{route('shop')}}" method="GET">
          Min <input class="form-control" type="text" name="min_price">
          Max <input class="form-control" type="text" name="max_price">
          Keyword <input class="form-control" type="text" name="keyword" >
          <input class="btn btn-default" type="submit" value="Filter">
      </form>

查看:

{{1}}

哪个会显示我的产品。我还想在我的产品顶部添加过滤器选择框,以便用户过滤结果。

  

更新:现在将加载页面但没有结果,它只是刷新   页面!

database

1 个答案:

答案 0 :(得分:1)

首先,您应该创建一个表单,您可以放置​​所有过滤器。

<form action="{{ url('url/to/your/indexproduct')}}" method="GET">
    <input type="text" name="min_price">   //User can input minimum price here
    <input type="text" name="max_price">  //User can input maximun price here
    <input type="text" name="keyword" >  // User can input name or description
    <input type="submit" value="Filter">
</form>

之后,您的控制器将在单击“提交”按钮后从该表单接收数据。所以,如果你想检查它。这样做。

public function indexproduct(Illuminate\Http\Request $request) {
    dd($request->all())  // This will show all your filters
}

然后当您将数据发送到控制器时,您应该修改查询并包含过滤器。 (有很多方法可以做到这一点,但这很简单)

public function indexproduct(Illuminate\Http\Request $request) {
    $query = Product::orderBy('created_at','desc');
    if($request->keyword){
        // This will only execute if you received any keyword
        $query = $query->where('name','like','%'.$keyword.'%');
    }
    if($request->min_price && $request->max_price){
        // This will only execute if you received any price
        // Make you you validated the min and max price properly
        $query = $query->where('price','>=',$request->min_price);
        $query = $query->where('price','<=',$request->max_price);
    }
    $products = $query->paginate(5);
    return view('frontend.shop', compact('products'));
}

我希望它会帮助你。