32 🔍 BUSCADOR de Productos | Lógica de Filtro y Queries Dinámicas en Laravel 12 E-commerce

Duración: 17 min
Módulo: 🛒 Tienda Online (Frontend Shop) y Funcionalidades 25-33 Lección 8 de 9

Descripción

Lección 32: 🔍 Buscador de Productos | Lógica de Filtro y Queries Dinámicas

Este capítulo se dedica a implementar una funcionalidad esencial para cualquier e-commerce: el buscador de productos en la parte pública del sitio, utilizando queries dinámicas y optimizadas en Laravel.

⚙️ Configuración del Formulario y Rutas

Se dota de funcionalidad al campo de búsqueda existente en la cabecera de la tienda:

  • Método del Formulario: El formulario de búsqueda se configura utilizando el método GET [01:22].
  • Ruta de Búsqueda: Se define una nueva ruta GET, /buscar, en web.php, la cual es gestionada por la función buscarProducto dentro del WebController [01:54].
  • Persistencia del Término: Se implementa un mecanismo para que el texto de la búsqueda se mantenga visible en el campo de input después de realizar la consulta, mejorando la experiencia del usuario [11:14].

🧠 Lógica de Búsqueda Dinámica

Se desarrolla una consulta SQL flexible para obtener resultados relevantes en la Base de Datos:

  • Criterios Múltiples: La búsqueda utiliza la cláusula LIKE para encontrar coincidencias de texto. Inicialmente se busca por el nombre del producto [06:19].
  • Ampliación del Filtro: Se utiliza el operador orWhere para buscar coincidencias también en la descripción corta del producto [07:28], aumentando las posibilidades de encontrar un resultado.
  • Ordenación: Los resultados son ordenados alfabéticamente (orderBy) en base al nombre del producto para ofrecer una lista coherente [08:12].

📊 Presentación Optimizada de Resultados

Se gestiona la visualización de los resultados en una vista dedicada, solucionando un problema clave de paginación:

  • Vista Dedicada: Se crea la vista buscar.blade.php donde se copia la estructura de la lista de productos para mostrar las coincidencias [09:56].
  • Mensaje de Coincidencias: Se añade lógica condicional (@if) para notificar al usuario cuando no se encontraron productos que coincidan con su búsqueda [13:41].
  • Solución de Paginación ⚙️: Para evitar que la consulta se pierda al cambiar de página (lo que mostraba todos los productos en lugar de solo los resultados de la búsqueda), se utiliza la función ->appends(request()->except('page')) [15:22]. Esta función asegura que el término de búsqueda se mantenga en los enlaces de paginación.