So I want to get all items if the user hasn't selected any options, otherwise query the items according to the request data. However I can't pass the $request
to my function. Here is my code:
public function showProducts(Request $request)
{
$products = Product::all();
if(count($request->all()) != 0) {
$products = Product::where(function($query) {
$minPrice = $request['min'] ? $request['min'] : null;
$maxPrice = $request['max'] ? $request['max'] : null;
$colors = $request['color'] ? $request['color'] : null;
$sizes = $request['size'] ? $request['size'] : null;
if($minPrice != null && $maxPrice != null) {
$query->where('price', '>=', $minPrice)->where('price', '<=', $maxPrice);
}
if($minPrice == null && $maxPrice == null && $colors == null && $sizes == null) {
}
})->get();
}
}
Obviously I have $request in my showProducts closure however I can't access it inside my anonymous function inside where
. How can I use my $request data in the anonymous function?