Easily cache your Laravel's Eloquent models.
-
PHP >= 7.2
-
Laravel 6 / 7 / 8
Install via composer :
composer require authentik/eloquent-cache
-
When Eloquent fetches models, the JSON representations of the model instances are cached.
-
Subsequently, when eloquent fetches a model by ID, the cached JSON will be converted back into an instance.
Use the Cacheable trait in the models you want to cache.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Authentik\EloquentCache\Cacheable;
class Category extends Model
{
use Cacheable;
/*
* You can optionally override the following functions:
*/
// Time To Live in minutes (default value: 0 => no TTL)
public function getCacheTTL() {
return 60;
}
// default value: the lowercase name of the model
public function getCacheTagName() {
return 'cat';
}
// Cache busting will automatically invalidate the cache when model instances are updated or deleted.
// default value: true
public function isCacheBustingEnabled() {
return false;
}
// Whether or not to keep model instances in a static array cache
// (useful to avoid querying the cache store/building instances from json multiple times)
// default value: true
public function isStaticCacheEnabled() {
return false;
}
}To manually cache a model instance, use the
cachemethod.
Category::find(1)->cache();To invalidate the cache for a model instance, use the
refreshorflushmethod.
$refreshedInstance = Category::find(1)->refresh();
// or
Category::flush(Category::find(1));To invalidate the cache for all instances of a model, use the
flushmethod.
Category::flush();