TGViewer
PHP задачи с собеседований PHP задачи с собеседований @phpquiz · 2.88K subscribers
Post #2324 593
❓ Что такое Lazy Collections в Laravel?

Обычная Collection загружает всё в память сразу. При работе с большими объёмами данных — это проблема.

// ❌ Загрузит ВСЕ записи в память
$users = User::all()->filter(...)->map(...);

// ✅ Lazy Collection — обрабатывает по одной записи через генератор
User::cursor()->filter(function (User $user) {
return $user->is_active;
})->each(function (User $user) {
ProcessUser::dispatch($user);
});

cursor() использует PDO fetchRow под капотом — в памяти одновременно одна запись.

Lazy Collection из файла:

// Обработка огромного CSV без OutOfMemoryError
$collection = LazyCollection::make(function () {
$handle = fopen('huge_file.csv', 'r');
while ($row = fgetcsv($handle)) {
yield $row;
}
});

$collection->skip(1)->chunk(100)->each(function ($rows) {
ImportBatch::dispatch($rows->toArray());
});

Когда использовать

— 10k+ записей в обработке → cursor() + LazyCollection
— Файлы, стримы, внешние API с пагинацией → LazyCollection с генератором

Важно: методы типа count() и last() материализуют коллекцию. Их лучше избегать в lazy-контексте.
More from @phpquiz
  1. Sep 15, 2026Что будет результатом кода? 👍 — world hello 👾— FiberError 🥰— hellohello world ❤️— hello…
  2. Aug 4, 2026Post #2419
  3. Jul 29, 2026Post #2417
  4. Jul 27, 2026Когда название файла уже само по себе считается техническим долгом 👇
  5. Jul 24, 2026Post #2413
  6. Jul 22, 2026💬 Обратная связь Как часто вы проходите собеседования? 🔥 — Сейчас активно ищу работу 👍�…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →