Before pagination use orderby and provide the column you want to sort.
May 25, 2021
12
Level 6
Sort product after searching product
I am doing an e-commerce project, I got a list of products displayed in product_searched_list.blade.php after search query or after going through category dropdown. i want to sort the list of the product after searching how can i implement such functionality
method for a list of the product after search
public function product_search(Request $request){
$querys=$request->search_query;
if($request->category=='all'){
$product = Product::where(function ($query) use ($querys) {
$query->where("name","like","%".$querys."%")
->orWhere("description","like","%".$querys."%")
->orWhere("color","like","%".$querys."%")
->orWhere("size","like","%".$querys."%");
})->paginate(8) ;
}else{
$category=Category::where('slug',$request->category)->firstOrFail();
$cat_id=$category->id;
$product = Product::where('category_id',$cat_id)->where(function ($query) use ($querys) {
$query->where("name","like","%".$querys."%")
->orWhere("description","like","%".$querys."%")
->orWhere("color","like","%".$querys."%")
->orWhere("size","like","%".$querys."%");
})->paginate(8);
}
return view('frontend.product_list')->with('product',$product);
}
this result is displayed in product_searched_list.blade.php...in this blade file ...i want to do some sort query how can i implement such functionality
Level 75
Start thinking about your code...
public function search(Request $request)
{
$products = Product::when($request->search, function ($query, $search) {
return $query->where(function ($query) use ($search) {
$query->where('name', 'like', $search = "%{$search}%")
->orWhere('description', 'like', $search)
->orWhere('color', 'like', $search)
->orWhere('size', 'like', $search);
});
})->when($request->category && $request->category != 'all', function ($query) use ($requst) {
return $query->whereHas('category', function ($query) use ($request) {
$query->where('slug', $request->category);
});
})->orderBy('something')->paginate(8);
return view('frontend.product-list', compact('products'));
}
Please or to participate in this conversation.