2017-07-29 32 views
3

我想创建一个'Sort By'列表,其中任何列表项都被选中,然后我的laravel php switch语句将返回正确的查询。我该怎么做这个?我如何将HTML Select与Switch语句结合起来

到目前为止,我已经

<select class="form-control" name="SortbyList" > 
    <option value="1">Highest Avg</option> 
    <option value="2">Lowest Avg</option> 
    <option value="3">Another Sort option</option> 
    <option value="2">another sort option</option> 
</select> 

如何使用这跟这将是我的Laravel控制器放置一个开关?

回答

1

既然你没有表现出任何的代码,我给你一个简单的例子:

$data = Model::query(); 

switch (request()->sortByList) { 
    case 1: 
     $data = $data->orderBy('average', 'desc'); 
     break; 
    case 2: 
     $data = $data->orderBy('average', 'asc'); 
     break; 
    ... 
} 

$data = $data->get(); 
-1

你不需要PHP来处理的排序,你可以在客户端做到这一点,与JS/jQuery。这将完成所有工作而无需刷新页面。

<script> 
jQuery(document).ready(function() { 

jQuery(".form-control").change(function(){ 
var conceptName = jQuery('#link').find(":selected").text(); 

if(conceptName == "Highest Avg"){ 
    //sorting code here for highest 
} 
if(conceptName == "Lowest Avg"){ 
    // code here 
} 
if(conceptName == "Another Sort option"){ 
    // code here 
} 


}); 
}); 
</script> 
0

我有这一切,但似乎没有发生在选择和切换?这里是所有的代码,我...

  <select class="form-control" name="SortbyList" > 
       <option value="1">Highest Avg</option> 
       <option value="2">Lowest Avg</option> 
       <option value="3">Another Sort option</option> 
       <option value="2">another sort option</option> 
      </select> 

和控制器:

$productsQuery = Product::where('approved', '=', 1)->leftJoin('reviews', 'reviews.products_id', '=', 'products.id')->select('products.*', DB::raw('AVG(ratings) as ratings_average'))->groupBy('products.id'); 
     switch ($request->SortbyList) { 
      case 1: 
       $productsQuery = $productsQuery->orderBy('ratings_average', 'DESC'); 
       break; 
      case 2: 
       $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC'); 
       break; 
      case 3: 
       $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC'); 
       break; 
      case 4: 
       $productsQuery = $productsQuery->orderBy('ratings_average', 'ASC'); 
       break; 
       default: 
        $productsQuery = $productsQuery->orderBy('ratings_average', 'DESC'); 


     } 



     $name=$request->input('productname'); 
     $count=$request->input('country_id'); 


     if(!empty($name)){ 
      $productsQuery->where('productname', 'LIKE', '%'.$name.'%')->get(); 
     } 
     if(!empty($count)){ 
      $ProductsQuery->where('country_id', $request->input('country_id'))->get(); 
     } 
     $products= $ProductsQuery->paginate(10); 

借口的情况下3和4 IM尚未进行编码。