Carga perezosa Vs Carga ansiosa en Laravel

En esta lección te muestro la diferencia entre la carga perezosa y la carga ansiosa en Laravel.

Ésta lección forma parte del Curso de Laravel desde Cero. Si quieres saber más sobre el curso completo 👉 entra aquí 👈.

Primeramente tenemos que saber que la carga perezosa y la carga ansiosa en Laravel son dos formas de obtener los registros de nuestra base de datos 🗃️ mediante las relaciones configuradas en los modelos.

Brevemente te puedo adelantar que la carga perezosa o lazy load significa que únicamente cargas los registros de la relación cuando accedes a ella.

Esto quiere decir que cada vez que llamemos a una relación como por ejemplo:

$user->articles

Suponiendo que cada usuario puede tener muchos artículos, en ese caso siempre se realizará una petición SQL para poder obtener dichos artículos.

Si llamamos a dicha relación una vez, pues no habrá problema pero si la colocamos dentro de un foreach para iterar sobre cada usuario, tendremos una petición por cada iteración.

Si tenemos 1000 registros (usuarios) se realizará 1000 peticiones a la base de datos al momento de llamar a la relación articulos 😲. Por tal motivo se le llama carga perezosa.

Para mejorar lo anterior descrito, Laravel nos ofrece otro tipo de carga llamada carga ansiosa la cual realiza una carga previa de los registros de las relaciones con el fin de evitar hacer tantas peticiones SQL 🤩.

Para hacer uso de la carga ansiosa y ahorrarnos peticiones SQL, simplemente hacemos uso del método with pasándole como parámetro la relación o relaciones que deseemos.

Si seguimos el ejemplo de los usuarios y los artículos sería algo como esto:

$users = User::with('articles')->get();

Con lo anterior tendríamos todos los usuarios y cada uno de ellos ya contaría con su colección de artículos sin necesidad de hacer peticiones SQL adicionales al usar la variable $users en alguna estructura de repetición.

Todo esto está mejor explicado en el siguiente video:

La documentación oficial sobre la carga perezosa y la carga ansiosa la puedes encontrar aquí:

Espero que haya sido de gran utilidad éste tip que podría pasar desapercibido. Sin más que escribir, me despido y hasta el próximo post 🖖.

Ésta lección forma parte del Curso de Laravel desde Cero. Si quieres saber más sobre el curso completo 👉 entra aquí 👈.

Deja un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.