🏝 If you like the content of this blog, I would really appreciate your vote in Tuple's Send an Open Source Developer on Vacation contest. Just search for "Freek Van der Herten" in the nominees list and cast your vote. 🙌
😀 This holiday won't only be a nice reward for me, but also for my girlfriend who always gives me a lot of time working on open source packages and blog posts.
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:
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.
Follow me on Twitter. I regularly tweet out programming tips, and what I myself have learned in ongoing projects.
Every month I send out a newsletter containing lots of interesting stuff for the modern PHP developer.
Expect quick tips & tricks, interesting tutorials, opinions and packages. Because I work with Laravel every day there is an emphasis on that framework.
Rest assured that I will only use your email address to send you the newsletter and will not use it for any other purposes.