Every two weeks I send out a newsletter containing lots of interesting stuff for the modern PHP developer. You can expect quick tips, links to interesting tutorials, opinions and packages. Want to learn the cool stuff? Then sign up now!

A Laravel package to clean up models

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

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:

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
        //delete up all records older than a year
        return $query->where('created_at', '<', Carbon::now()->subYear());

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.

Freek Van der Herten is a partner and developer at Spatie, an Antwerp based company that specializes in creating web apps with Laravel. After hours he writes about modern PHP and Laravel on this blog. When not coding he’s probably rehearsing with his kraut rock band. He loves waffles and butterflies.