Laravel Lazy Collections: procesar 500k rows sin explotar memoria.

15 May 2026 · 4 min lectura · TIL

Encontré el límite de Eloquent migrando datasets grandes. User::all() cargaba todo en memoria y PHP reventaba. La solución fue cursor() + LazyCollection para procesar en streaming — la memoria se mantuvo constante sin importar el volumen.

// ❌ explota con 500k rows
$users = User::all();
foreach ($users as $user) {
    $this->processUser($user);
}

// ✓ streaming con cursor() — memoria constante
User::query()->cursor()->each(function (User $user) {
    $this->processUser($user);
});