input('search'); $type = $request->input('type'); $tagFilter = $request->input('tag'); // --- CONSULTA PARA LA GRILLA (PAGINADA) --- $productsQuery = Product::with('tags'); $productsQuery->when($query, function ($q) use ($query) { return $q->where('name', 'like', "%{$query}%"); }); if ($type) { $productsQuery->where('type', $type); } else { $productsQuery->where('type', '!=', 'service'); } if ($tagFilter) { $productsQuery->whereHas('tags', function($q) use ($tagFilter) { $q->where('name', $tagFilter); }); } //mostrar si tiene stock mayor a 0 $productsQuery->where('stock_quantity', '>', 0); // Resultados paginados $products = $productsQuery->orderBy('name', 'asc')->paginate(12)->withQueryString(); $allProducts = Product::where('type', '!=', 'service') ->where('stock_quantity', '>', 0) ->orderBy('name', 'asc') ->get(); $allTags = \App\Models\Tag::orderBy('name')->get(); // Devuelve la vista return view('catalogo.index', compact('products', 'allProducts', 'allTags')); } public function show(Product $product) { return view('catalogo.show', compact('product')); } }