我有一个表单,我在几个主题上搜索产品,我也有一个html选择使用PHP开关,以便能够对结果的顺序进行排序。这当前在搜索表单中工作,我希望通过html选择进行排序,而无需单击搜索按钮,并在每次更改时运行正确的选择选项,并立即更改产品的顺序以匹配选择选项
这是HTML:
{!! Form::open(['route' => 's.index', 'method' => 'GET']) !!}
<div class="form-group">
{!! Form::label('productsname', 'Search By Name:') !!}
{!! Form::text('productsname', null, array('class' => 'form-control')) !!}
</div>
</div>
<div class="col-md-6">
<div class="form-group">
{!! Form::label('categories_id', 'Search By Category:') !!}
<select class="form-control" name="categories_id" >
<option value=""></option>
@foreach($types as $type)
<option value="{{$type->id}}">{{$type->name}}</option>
@endforeach
</select>
</div>
</div>
<div class = col-md-6>
<div class="form-group">
</div>
</div>
<div class="form-group">
<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>
{!! Form::submit('Find Products', array('class' => ' btn-lg btn-block')) !!}
{!! Form::close() !!}
</div>
这是PHP:
public function index(Request $request)
{
//
$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');
$location=$request->input('categories_id');
if(!empty($name)){
$sightsQuery->where('productname', 'LIKE', '%'.$name.'%')->get();
}
if(!empty($location)){
$sightsQuery->where('categories_id', $request->input('categories_id') )->get();
}
$products= $productsQuery->paginate(8);
return view('p.search')->withproducts($products);
}