Contenido del curso
Fundamentos de Laravel
- 3

Qué es Artisan y cómo automatiza Laravel
04:23 min - 4

Rutas básicas en Laravel con web.php
06:44 min - 5

Cómo retornar vistas Blade en Laravel
07:02 min - 6

Plantillas Blade para vistas sin código repetido
06:03 min - 7

Controladores en Laravel con Artisan
07:17 min - 8

Migraciones en Laravel como control de versiones
07:01 min - 9

Modelos y factories en Laravel con datos falsos
06:56 min - 10

Consultas a base de datos con Eloquent
08:26 min - 11

Relaciones entre tablas con belongsTo en Laravel
05:37 min
Manos a la obra con nuestro proyecto
- 12

Revisión de arquitectura MVC en Laravel
02:15 min - 13

Instala el login de Laravel con Breeze
05:41 min - 14

Rutas de login y logout en Laravel Breeze
04:22 min - 15

Rutas y vistas con Route::resource en Laravel
03:59 min - 16

Listado de posts con paginación en Laravel
04:36 min - 17

Formulario para eliminar registros en Laravel
04:53 min - 18

Vistas de creación y edición con formulario compartido
06:49 min - 19

Formulario CRUD reutilizable en Laravel
05:02 min - 20

Guardar registros con relaciones en Laravel
06:06 min - 21

Método update en Laravel sin reescribir código
01:44 min - 22

Validación de formularios en Laravel con old()
04:43 min - 23

Validación unique en Laravel sin duplicados
05:32 min
Trabajemos en el diseño web de nuestro proyecto
- 24

Diseño del header con Tailwind y Laravel
06:38 min - 25

Divisor con gradiente en Tailwind CSS
03:50 min - 26

Construye la vista home de tu blog en Laravel
06:36 min - 27

Sección destacada con posicionamiento absoluto en Tailwind
04:15 min - 28

Diseño de página de publicación con Tailwind
02:33 min - 29

Formulario de búsqueda con Laravel y LIKE
04:18 min - 30

Cómo detectar el problema N+1 en Laravel
Viendo ahora
Cierre
Cómo detectar el problema N+1 en Laravel
Resumen
Cuando tu proyecto en Laravel ya funciona, queda un paso que muchos olvidan: medir el rendimiento. Optimizar consultas en Laravel con Debugbar te permite detectar cuellos de botella antes de que tu aplicación crezca y empiece a fallar con miles de registros.
¿Qué hace Laravel Debugbar y por qué instalarlo?
Laravel Debugbar es un paquete de terceros que añade una barra de depuración al pie de tu aplicación. Esa barra muestra cuántas consultas SQL se ejecutan, cuánto tardan y dónde ocurren. Con esa información, tomas decisiones informadas en lugar de optimizar a ciegas.
La instalación es directa desde la terminal:
bash composer require barryvdh/laravel-debugbar --dev
El flag --dev indica que solo lo necesitas en el entorno de desarrollo, no en producción.
¿Para qué sirve Laravel Debugbar? Para visualizar en tiempo real el número de consultas SQL, su tiempo de ejecución y el origen del código que las dispara. Es una herramienta de diagnóstico, no de producción.
¿Cómo activo o desactivo la barra de depuración?
El control vive en el archivo .env. Cuando la variable de depuración está en true, la barra aparece. Si la pones en false, desaparece. Así mantienes el flujo limpio cuando presentas la app y lo activas cuando necesitas inspeccionar.
¿Por qué aparecen 18 consultas en lugar de 3?
Aquí viene lo interesante. Al mostrar el nombre del usuario creador de cada publicación en el home con post->user->name, las consultas saltaron de 3 a 18. Ese salto es una señal clara del problema N+1: por cada publicación impresa en la vista, Laravel lanza una consulta extra para traer al usuario relacionado.
Con pocos registros pasa desapercibido. Con 5000 registros, el rendimiento se desploma.
¿Qué es el problema N+1 en Laravel? Es cuando ejecutas una consulta principal y, por cada resultado, se dispara una consulta adicional para traer datos relacionados. Si tienes 17 publicaciones, terminas con 1 + 17 = 18 consultas en vez de solo 2.
¿Cómo soluciono las consultas en la vista?
La raíz del problema es que las consultas se estaban haciendo en la vista, no en el controlador. La solución es eager loading: indicar al controlador que, al traer los artículos, incluya desde el inicio la información de los usuarios relacionados.
En lugar de dejar que cada iteración de la vista pida al usuario por separado, el controlador entrega una consulta completa. El resultado: regresas a un número mínimo de consultas y la vista solo imprime datos ya cargados en memoria.
La regla práctica que deja esta lección:
- Las consultas siempre deben originarse en el controlador.
- La vista solo debe consumir datos, nunca pedirlos.
- Si ves un número de consultas que crece con cada registro, sospecha de N+1.
¿Dónde encuentro más componentes de terceros para Laravel?
El ecosistema de paquetes de Laravel es enorme y se explora desde repositorios públicos donde puedes filtrar por palabra clave: Excel, PDF, debug o el nombre del framework. Cada componente trae su propia documentación con ejemplos de instalación, activación y uso.
Esa práctica de buscar e integrar paquetes externos es lo que convierte un proyecto sencillo en uno escalable. Vas sumando funciones pequeñas, como la barra de depuración o un icono de usuario, sin reinventar la rueda.
Detalles de diseño que acompañan la optimización
Mientras optimizas el backend, también puedes pulir la vista. En el home, junto al nombre del autor, se añadió un contenedor con utilidades de Tailwind:
- Texto pequeño en color gris con opacidad de 75.
- Contenedor
flexconitems-centery ungapde nivel 1. - Un icono de usuario de 4 unidades de alto y ancho, tomado de una librería pública.
Estos detalles parecen menores, pero refuerzan la idea central: un proyecto profesional cuida diseño, versiones y rendimiento al mismo tiempo. Descuidar uno te pasa factura tarde o temprano.
¿Qué te llevas de este bonus de optimización?
Instalar Debugbar, leer el contador de consultas y mover la lógica de la vista al controlador son tres movimientos que cambian el comportamiento de tu aplicación bajo carga. No esperes a tener miles de registros para descubrir que tu home tarda en responder.
Practica este flujo en tu propio proyecto: mide antes, ajusta el controlador con eager loading, mide después. ¿Qué diferencia de consultas obtuviste tú al aplicarlo? Cuéntalo en los comentarios.