89 Cargar las PELÍCULAS MÁS VISTOS en mi PÁGINA WEB con (LARAVEL y MYSQL) FULLSTACK

Duración: 14 min
Módulo: ✨ Módulo de Experiencia de Usuario y Cierre Lección 9 de 11

Descripción

🔥 Lección 89: Cargar las Películas Más Vistas

Esta lección avanzada utiliza la tabla pivote de historial para calcular las vistas por película, ordenarlas y desplegar los resultados en una nueva vista dedicada.

1. ⚙️ Preparación de Rutas y Vista para "Más Vistos"

El primer paso es crear el endpoint y la interfaz para la nueva funcionalidad en la navegación principal.

  • Ajuste de Navegación: El enlace "Los Más Vistos" en la plantilla (layout/principal.blade.php) se actualiza para apuntar a la URL /los_mas_vistos [01:51].
  • Definición de Ruta: Se define una nueva ruta GET en routes/web.php que mapea la URL /los_mas_vistos a la función losMasVistos dentro del PeliculaController [02:49].
  • Creación de Vista y Función:
    • Se crea el archivo de vista los_mas_vistos.blade.php [02:30].
    • Se implementa la función public function losMasVistos() en PeliculaController.php para retornar esta vista, asegurando que herede la plantilla principal [03:32].

2. 🧠 Lógica de Consulta: Conteo y Ordenamiento [07:03]

La clave de la funcionalidad reside en contar las repeticiones de los IDs de las películas dentro de la tabla historials.

  • Uso del Query Builder (DB::table): Dado que se requiere una consulta de agregación compleja, se utiliza el Facade DB (Query Builder) en lugar del modelo Eloquent para interactuar con la tabla historials [07:34].
  • Conteo y Agrupación: Se implementan las siguientes funciones de SQL a través del Query Builder:
    • select(DB::raw('COUNT(*) as count')): Cuenta el número de registros para cada ID y asigna el resultado a la columna virtual count [08:46].
    • groupBy('id_pelicula'): Agrupa los resultados basándose en el ID de la película, lo que permite que el conteo se realice por película [09:23].
  • Ordenamiento:
    • orderBy('count', 'desc'): Ordena los resultados de manera descendente, garantizando que la película con el conteo más alto (más vistas) aparezca primero [09:44].

3. 💾 Extracción y Verificación de IDs [11:03]

El resultado de la consulta se procesa para obtener un array de IDs ordenados por popularidad.

  • Conversión a Array de IDs: Se utiliza el método pluck('id_pelicula') sobre la colección resultante para extraer solo la columna id_pelicula, creando un array de IDs ordenados de más a menos vistos [11:12].
    • Ejemplo de resultado (ID: Conteo): El ID 11 aparece en la cima con un conteo de 3 [13:28].
  • Retorno de Consulta: La variable que contiene el array de IDs ordenados ($losMasVistos) queda lista para ser utilizada en una segunda consulta (similar a la de Favoritos) para buscar y cargar la información completa de esas películas en la vista.