chunkById() - безпечна пакетна обробка
Обробляєте таблицю через chunk() і одночасно змінюєте колонку, за якою фільтруєте? Частина записів буде пропущена.
chunk() гортає сторінки через OFFSET. Якщо запис випадає з вибірки під час обробки, решта зсувається - і цілий пакет ви не побачите.
Як працює chunkById():
Замість OFFSET використовує where('id', '>', $lastId). Зсув вибірки більше не ламає ітерацію.
Коли обов'язково chunkById():
- Оновлюєте поле, за яким фільтруєте
- Видаляєте записи під час обходу
- Будь-яка міграція даних із записом у ту саму таблицю
Порада: сортування задає сам chunkById() - не додавайте власний orderBy(), він його перезапише.