use App\Models\Order; use Illuminate\Support\Facades\Log; // Process orders in chunks of 100 records Order::chunk(100, function ($orders) { foreach ($orders as $order) { // Perform operations on each order $order->status = 'processed'; $order->save(); // Or perform other logic Log::info("Order {$order->id} processed."); } }); // Alternatively, use chunkById for better performance with large tables // especially when records are added/deleted during chunking Order::chunkById(500, function ($orders) { foreach ($orders as $order) { // Process each order // Example: Generate invoice // InvoiceService::generate($order); Log::info("Processing order by ID: {$order->id}"); } }, $column = 'id', $alias = null); // This prevents loading all records into memory at once, // which is crucial for large datasets.