info('Starting student status update...'); // Using chunk to avoid memory exhaustion on large databases $updatedCount = 0; Student::with('contracts')->chunkById(200, function ($students) use (&$updatedCount) { foreach ($students as $student) { $oldStatus = $student->status; $student->updateStatus(); if ($oldStatus !== $student->status) { $updatedCount++; } } }); $this->info("Student status update finished. {$updatedCount} students updated."); } }