LaravelPackages.net
Acme Inc.
Toggle sidebar
alex433/laravel-eloquent-cache

Laravel's Eloquent models caching

3.390
2
v0.9.2
About alex433/laravel-eloquent-cache

alex433/laravel-eloquent-cache is a Laravel package for laravel's eloquent models caching. It currently has 2 GitHub stars and 3.390 downloads on Packagist (latest version v0.9.2). Install it with composer require alex433/laravel-eloquent-cache. Discover more Laravel packages by alex433 or browse all Laravel packages to compare alternatives.

Last updated

Laravel Eloquent cache

Total Downloads Latest Stable Version Latest Unstable Version License

Laravel's Eloquent models caching

Installation

Install via composer :

composer require alex433/laravel-eloquent-cache

How it works

When Eloquent fetches models by primary key, the SQL query result are cached. Subsequently, when eloquent fetches a model by primary key, the cached result will be used. The cache entry will be flushed when you create, update, or delete a model instance.

Usage

Use the Cachable trait in the models you want to cache.

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Alex433\LaravelEloquentCache\Cachable;

class Post extends Model
{
    use Cachable;
}

In next cases cache queries will be executed instead SQL queries. Also it do the trick for "belongs To" relations.

Post::find($id); // findOrFail(), findOrNew()
Post::where('id', $id)->first(); // firstOrFail(), firstOrNew(), firstOrCreate(), firstOr()
Post::whereId($id)->first();
Post::where('id', $id)->get();

You can optionally define the following properties to change default trait behavior.

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

use Alex433\LaravelEloquentCache\Cachable;

class User extends Authenticatable
{
    use Notifiable,
        Cachable;

    /**
     * Cache TTL in seconds. Defaults indefinitely
     *
     * @var int $cacheTtl
     */
    public $cacheTtl = 3600;

    /**
     * Cache store name. Defaults default cache connection
     *
     * @var string $cacheStore
     */
    public $cacheStore = 'redis';

    /**
     * Cache tags. Defaults no tags
     *
     * @var array $cacheTags
     */
    public $cacheTags = ['users'];
}

To invalidate the cache entry for a model instance, use forget method.

User::find($id)->forget();

// or

User::find($id)->forget()->refresh();

When cache tags is used, you can flush the cache for a model, use the flushCache method.

User::flushCache();

// or

User::find($id)->flushCache();

Star History Chart