LOAD VS WITH EN LARAVEL

load() - Lazy Eager Loading

Se ejecuta después de la consulta principal.

Usar load cuando ya se tienen los modelos y luego se cargan las relaciones.

$users = User::all();
$users->load('posts');

Cómo funciona

  1. Ejecuta la consulta inicial para obtener los usuarios.
  2. Ejecuta una consulta adicional para cargar las relaciones (posts).

Cuándo usar load

  • Cuando las relaciones se necesitan de forma condicional.
  • Cuando ya está trabajando con un modelo o colección existente.

with - Eager Loading

Se ejecuta antes de la consulta principal.

Usar with cuando se sabe de antemano qué relaciones se van a necesitar.

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

Cómo funciona

Ejecuta una sola consulta optimizada (o el mínimo necesario) para cargar los usuarios junto con sus posts.

Cuándo usar with

  • Cuando se sabe que relaciones se necesitan antes de ejecutar la consulta.
  • Mejor opción para el rendimiento en la mayoría de los casos.
Usar with() siempre que sea posible ya que reduce el número de consultas y evita el problema N+1.