Most databases will contain some records that must be cleaned up. The reasons why a record can become unneeded are diverse:

maybe it's a temporary record that was only needed for a little while

if you're logging stuff to a table, a record may become too old to be of interest anymore

...

use Spatie \ ModelCleanup \ GetsCleanedUp ; use Illuminate \ Database \ Eloquent \ Builder ; use Carbon \ Carbon ; class LogItem extends Model implements GetsCleanedUp { ... public static function cleanUp (Builder $query) : Builder { return $query->where( 'created_at' , '<' , Carbon::now()->subYear()); } }

To help a Laravel app delete such records our intern Jolita coded up a package called laravel-model-cleaner . Models containing unneeded records can implement the provided `GetsCleanedUp`-interface. Here's an example:

In the configuration file you can specify the directory containing your models. The package will automatically detect all classes that implement the GetsCleanedUp -interface in that directory.

When firing the clean:models artisan command all records selected by the cleanUp -function will be deleted. Of course you can schedule that command to automate the cleanup process.

Take a look at the package on GitHub. Our other Laravel packages are listed on our company website.