2017 © Pedro Peláez
 

library cabinet

Runtime Cache for Laravel Eloquent

image

laravie/cabinet

Runtime Cache for Laravel Eloquent

  • Monday, July 30, 2018
  • by crynobone
  • Repository
  • 1 Watchers
  • 2 Stars
  • 1,618 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 7 Versions
  • 25 % Grown

The README.md

Runtime Cache for Laravel Eloquent

Cabinet allows you to attach runtime or persistent caching to any Laravel Eloquent instance., (*1)

tests Latest Stable Version Total Downloads Latest Unstable Version License, (*2)

Installation

To install through composer, simply put the following in your composer.json file:, (*3)

{
    "require": {
        "laravie/cabinet": "^3.0"
    }
}

And then run composer install or composer update from the terminal., (*4)

Quick Installation

Above installation can also be simplify by using the following command:, (*5)

composer require "laravie/cabinet=^3.0"

Usages

Setup Cabinet on a Model

You first need to add Laravie\Cabinet\Cabinet on an Eloquent Model such as:, (*6)

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravie\Cabinet\Cabinet;

class User extends Authenticatable
{
    use Cabinet;
}

Allow persistent caching

To add persistent caching on the Eloquent, you have to attach a cache storage that support tags (Cache tags are not supported when using the file or database cache driver)., (*7)

<?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravie\Cabinet\Cabinet;

class User extends Authenticatable
{
    use Cabinet;

    /**
     * Configure cabinet for the eloquent model.
     * 
     * @param  \Laravie\Cabinet\Repository  $cabinet 
     * @return void
     */
    protected function onCabinet($cabinet)
    {
        $cabinet->setStorage(resolve('cache.store'));
    }
}

Storing data

Runtime

Laravie\Cabinet\Repository::share(string $key, callable $callback);

The method allows a value to be register for $key using a closure/callable $callback., (*8)

$user->cabinet()->share('birthday', static function ($user) {
    return now()->diffInDays($user->birthdate);
});

Persistent with TTL

Laravie\Cabinet\Repository::share(string $key, callable $callback, $ttl = null);

By adding the 3rd parameter $ttl (in seconds), Cabinet will attempt to store the data in cache for $ttl seconds., (*9)

$user->cabinet()->share('birthday', static function ($user) {
    return now()->diffInDays($user->birthdate);
}, 60);

Forever

Laravie\Cabinet\Repository::forever(string $key, callable $callback);

You can either use forever as the 3rd parameter using share or use forever to cache the value indefinitely., (*10)

$user->cabinet()->share('birthday', static function ($user) {
    return now()->diffInDays($user->birthdate);
}, 'forever');

// or

$user->cabinet->forever('birthday', static function ($user) {
    return now()->diffInDays($user->birthdate);
})

Retrieving the data

Laravie\Cabinet\Repository::get(string $key);

Retrieving the data using get method., (*11)

$user->cabinet()->get('birthday');

// or

$user->cabinet('birthday');

Forgetting the data

Laravie\Cabinet\Repository::forget(string $key);

Forget any data by the given $key., (*12)

$user->cabinet()->forget('birthday');

Flushing all data

Laravie\Cabinet\Repository::flush();

Flushing all data for an Eloquent model., (*13)

$user->cabinet()->flush();

The Versions

30/07 2018

dev-master

9999999-dev

Runtime Cache for Laravel Eloquent

  Sources   Download

MIT

The Requires

 

The Development Requires

30/07 2018

2.0.x-dev

2.0.9999999.9999999-dev

Runtime Cache for Laravel Eloquent

  Sources   Download

MIT

The Requires

 

The Development Requires

30/07 2018

v2.0.3

2.0.3.0

Runtime Cache for Laravel Eloquent

  Sources   Download

MIT

The Requires

 

The Development Requires

30/07 2018

v2.0.2

2.0.2.0

Runtime Cache for Laravel Eloquent

  Sources   Download

MIT

The Requires

 

The Development Requires

02/05 2018

v2.0.1

2.0.1.0

Runtime Cache for Laravel Eloquent

  Sources   Download

MIT

The Requires

 

The Development Requires