DEV Community

Cover image for Laravel 9 - Prunable trait to automatically remove models from your database
Sandro Jhuliano Cagara
Sandro Jhuliano Cagara

Posted on

Laravel 9 - Prunable trait to automatically remove models from your database

You can use the Prunable trait to automatically remove models from your database.

(ex.) 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', '<=', now()->subDays(14));
    }

    protected function pruning()
    {
        // Remove the file from s3 before deleting the model
        Storage::disk('s3')->delete($this->filename);
    }
}
Enter fullscreen mode Exit fullscreen mode

Add PruneCommand to your schedule (app/Console/Kernel.php)

$schedule->command(PruneCommand::class)->daily();
Enter fullscreen mode Exit fullscreen mode

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay