beep/cachoid

Cachoid 为模型、集合和分页器提供了丰富的 API 用于缓存。

v1.2.0 2017-07-18 00:42 UTC

README

Cachoid 通过使用 Laravel 标签缓存存储为模型、集合和分页器提供了丰富的 API 用于缓存。

文档目前正在制作中。

安装

首先,通过 Composer 包管理器安装 Cachoid

composer require beep/cachoid

然后,您应该将 CachoidServiceProvider 添加到 config/app.php 配置文件的 providers 数组中

\Beep\Cachoid\CachoidServiceProvider::class,

如果喜欢使用 Cachoid 门面,请将其添加到 config/app.phpaliases 数组中

'Cachoid' => Beep\Cachoid\Facade::class,

最后,将 Beep\Cachoid\Cacheable 特性添加到您想要使其可缓存的模型中。此特性将为模型注册观察者以保持模型与 Cachoid 保持同步

<?php

namespace App;

use Beep\Cachoid\Cacheable;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Cacheable;
}

配置

配置模型标识符

默认情况下,每个 Eloquent 模型通过其模型标识符和缓存驱动程序进行同步。如果您想自定义标识符,可以在模型上重写 cacheableAs 方法。

<?php

namespace App;

use Beep\Cachoid\Cacheable;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use Cacheable;

    /**
     * Get the identifier to cache as.
     *
     * @return mixed
     */
    public function cacheableAs()
    {
        return $this->getKey();
    }
}

Eloquent 模型

通过标识符检索模型

remember 允许我们轻松缓存 Eloquent 模型。当记录是新鲜的,它会检索它

$user = $cachoid->eloquent()->withName(User::class)->identifiedBy(1)->remember(15, function () {
    return User::find(1);
});

或者更简单地说

$user = $cachoid->eloquent(User::class, 1)->remember(15, function () {
    return User::find(1);
});

分页器

rememberrememberForever 允许我们轻松缓存整个分页器的数据(例如 Eloquent 模型)。当模型在分页器内时,它们会被唯一标记为类的小写、下划线名称,并带有标识符。

$paginator = $cachoid->paginator(User::class)->remember(15, function () {
    return User::paginate();
});

remember 方法会缓存分页器,除非它已经存在于缓存中。

当然,您可以添加唯一性,如页面和每页结果数。

$paginator = $cachoid->paginator(User::class)->onPage(1)->showing(15)->remember(15, function () {
    return User::paginate();
});

或者更简单地说...

$paginator = $cachoid->paginator(User::class, 15, 1)->remember(15, function () {
    return User::paginate();
});

集合

待办事项

待办事项

  • 文档清理。
  • 一套广泛的测试,包括 Mockery 和 SQLite "功能" 测试(如 ModelObserverTest)的构建
  • 当前分页器适配器的页面解析。