雄辩(没有Laravel)缓存实现

use*_*955 6 php caching eloquent

我使用的口才没有Laravel,我想知道是否有可以使用(不依赖于Laravel组件)整合,然后自动缓存所有模型的查询(缓存后端是可变的缓存方法的方法,说APCu或内存缓存).

我认为应该可以编写一个处理这个的模型基类,但我不太清楚我将如何实现它.有没有人有这方面的想法?

Syl*_*wit 5

如果要自动缓存查询,则必须覆盖find(),findOrFail(),where()...方法

由于Eloquent的构建方式,您不能简单地在自定义模型类中添加方法find()

https://laracasts.com/discuss/channels/eloquent/override-find-method/replies/72028

class MyCacheModel extends \Illuminate\Database\Eloquent\Model
{
// override methods as explained in previous link
// cache the result in redis for how long you want
}
Run Code Online (Sandbox Code Playgroud)

然后在您的模型中,而不是扩展Eloquent\Model,现在从MyCacheModel扩展.通过一些自定义,您可以设置缓存查询的时间长度,如果不应缓存模型,则只需使用Eloquent\Model.