php - 你怎么会忘记 Laravel 中缓存的 Eloquent 模型?

标签 php caching laravel laravel-4

关于 Laravel 的理论问题在这里。

所以我要做的缓存示例是:

Article::with('comments')->remember(5)->get();

理想情况下,我希望有一个文章更新事件,当该模型(已缓存)的实例的 ID 更新时,我想忘记该键(即使它是被遗忘的查询的整个结果而不仅仅是一个模型实例),是否可以这样做?

如果没有,有什么方法可以合理干净地实现这一点吗?

最佳答案

所以我一直在寻找与 OP 相同问题的答案,但对解决方案并不十分满意。所以我最近开始玩这个并浏览框架的源代码,我发现 remember() 方法接受第二个参数 key 并且出于某种原因它没有记录在他们的 site 上(或者我错过了吗?)。

现在的好处是,数据库构建器使用在 app/config/cache.php 下配置的相同缓存驱动程序,或者我应该说这里记录的相同缓存系统- Cache .因此,如果您将 min 和 key 传递给 remember(),您可以使用相同的 key 通过 Cache::forget() 方法清除缓存,事实上,您可以几乎使用了 official site 中列出的所有 Cache 方法,例如 Cache::get()Cache::add()Cache::put() 等。但我不除非您知道自己在做什么,否则不建议您使用其他方法。

这里有一个例子,你和其他人可以理解我的意思。

Article::with('comments')->remember(5, 'article_comments')->get();

现在上面的查询结果将被缓存并与 article_comments 键相关联,然后可以随时用来清除它(在我的例子中,我在更新时这样做)。

所以现在如果我想清除缓存,不管它记住了多少时间。我只需调用 Cache::forget('article_comments'); 即可,它应该会按预期工作。

希望对大家有帮助:)

关于php - 你怎么会忘记 Laravel 中缓存的 Eloquent 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542890/

相关文章:

html - 在我的网站上缓存图像的最佳方式是什么?

php - Laravel API 返回不同模型用户

linux - 外壳返回 "PuTTYPuTTYPuTTY..."

php - 从两个不同的产品中选择 *

php - 可与 backbone.js 一起使用的 RESTful 持久性解决方案......在 PHP 中?

php - 我正在尝试将 MySQL 中的数据显示到包含表的 PHP 页面上,但无法获取要在表内显示的信息

php - Laravel:当 print_r 查询输出时允许的内存大小耗尽

c# - ResponseCache 在网络核心 3.1 中不起作用

javascript - 单击提交后,我希望 jQuery 的行为略有不同。缓存?

laravel - 如何在 Laravel 中将 'hasManyThrough' 与 3 个以上的表一起使用?