You can use the Prunable trait to automatically remove models from your database. You can permanently remove soft deleted models after a few days. class ExampleClass extends Model { use SoftDeletes; use Prunable; public function prunable() { // Files matching this query will be pruned return static::query()->where('deleted_at', ' subDays(14)); } protected function pruning() { // Remove the file from s3 before deleting the model Storage::disk('s3')->delete($this->filename); }} Add PruneCommand to your schedule (app/Console/Kernel.php) $schedule->command(PruneCommand::class)->daily();