groupBy('uid')->selectRaw('uid, max(id) as max_id'); $page = 1; $size = 1000; while (true) { $rows = $query->forPage($page, $size)->get(); $log = "sql: " . last_query() . ", count: " . $rows->count(); do_log($log); $this->info($log); if ($rows->isEmpty()) { $log = "no more data...."; do_log($log); $this->info($log); break; } foreach ($rows as $row) { do { $deleted = Attendance::query() ->where('uid', $row->uid) ->where('id', '<', $row->max_id) ->limit(10000) ->delete(); $log = "delete: $deleted by sql: " . last_query(); do_log($log); $this->info($log); } while ($deleted > 0); } $page++; } return 0; } }