use App\Models\Product; use Illuminate\Http\Request; // Example Controller Method public function index(Request $request) { $products = Product::query() ->when($request->has('category'), function ($query) use ($request) { $query->where('category_id', $request->input('category')); }) ->when($request->filled('search'), function ($query) use ($request) { $query->where('name', 'like', '%' . $request->input('search') . '%'); }) ->when($request->has('min_price') && $request->has('max_price'), function ($query) use ($request) { $query->whereBetween('price', [$request->input('min_price'), $request->input('max_price')]); }, function ($query) use ($request) { // Optional: default behavior if conditions not met if ($request->has('min_price')) { $query->where('price', '>=', $request->input('min_price')); } if ($request->has('max_price')) { $query->where('price', '<=', $request->input('max_price')); } }) ->orderBy('created_at', 'desc') ->get(); return view('products.index', compact('products')); }