Pet*_*Fox 28 php caching laravel laravel-4
关于Laravel的理论问题.
所以我要做的缓存示例是:
Article::with('comments')->remember(5)->get();
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望有一个文章更新事件,当该模型的实例的ID(已经缓存)更新时,我想忘记该密钥(即使它是忘记的查询的整个结果而不是仅仅那一个模型实例),有可能这样做吗?
如果没有,是否有某种方法可以合理地实现这一点?
Sye*_*.R. 59
所以我一直在寻找与OP相同问题的答案,但对解决方案并不满意.所以我最近开始玩这个并通过框架的源代码,我发现该remember()方法接受第二个参数被调用,key并且由于某种原因它没有在他们的网站上记录(或者我是否错过了?).
现在好消息是,数据库构建器使用相同的缓存驱动程序,该驱动程序配置在app/config/cache.php或者我应该说这里记录的相同缓存系统 - 缓存.所以,如果你通过分和关键remember(),你可以使用相同的键清除使用缓存Cache::forget()方法,事实上,你几乎可以使用所有Cache的列出的方法官方网站,像Cache::get(),Cache::add(),Cache::put()等等.但我不除非你知道自己在做什么,否则建议你使用其他方法.
以下是您和其他人了解我的意思的示例.
Article::with('comments')->remember(5, 'article_comments')->get();
现在上面的查询结果将被缓存,并将与article_comments密钥相关联,然后可以随时用它来清除它(在我的情况下,我在更新时这样做).
所以现在,如果我想清除缓存,无论它记住多少时间.我可以通过调用来完成它Cache::forget('article_comments');,它应该按预期工作.
希望这有助于每个人:)
Gla*_*elp 13
我认为做一个好办法就是像这样:
$value = Cache::remember('users', $minutes, function()
{
return DB::table('users')->get();
});
Run Code Online (Sandbox Code Playgroud)
然后使用Model Observers来检测更新模型的事件
class UserObserver {
public function saving($model)
{
//
}
public function saved($model)
{
// forget from cache
Cache::forget('users');
}
}
User::observe(new UserObserver);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18987 次 |
| 最近记录: |