beep / cachoid
Cachoid 为模型、集合和分页器提供了丰富的 API 用于缓存。
v1.2.0
2017-07-18 00:42 UTC
Requires
- illuminate/cache: ^5.4
- illuminate/database: ^5.4
- illuminate/support: ^5.4
- mockery/mockery: ^0.9.9
Requires (Dev)
- illuminate/config: ^5.4
- illuminate/events: ^5.4
- illuminate/pagination: ^5.4
- illuminate/routing: ^5.4
- phpunit/phpunit: ^6.2
README
Cachoid 通过使用 Laravel 标签缓存存储为模型、集合和分页器提供了丰富的 API 用于缓存。
文档目前正在制作中。
安装
首先,通过 Composer 包管理器安装 Cachoid
composer require beep/cachoid
然后,您应该将 CachoidServiceProvider
添加到 config/app.php
配置文件的 providers
数组中
\Beep\Cachoid\CachoidServiceProvider::class,
如果喜欢使用 Cachoid
门面,请将其添加到 config/app.php
的 aliases
数组中
'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); });
分页器
remember
和 rememberForever
允许我们轻松缓存整个分页器的数据(例如 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)的构建
- 当前分页器适配器的页面解析。