如何为Yii 2使用ActiveRecotd缓存?我没有在官方文档中找到任何示例。在Google中,我找到了2个示例,第一个是:
$db = self::getDb();
$object = $db->cache(function ($db) use($id) {
return self::findOne($id);
});
但这不适用于Model
,我使用更新的框架进行了测试。其他示例是:
$data = \Yii::$app->cache->get('some_var_' . $id);
if ($data === false)
{
$data = self::findOne($id);
\Yii::$app->cache->set('some_var_' . $id, $data, 60);
}
它工作正常,但不是ActiveRecord缓存,而是数据缓存,因此Yii 2中没有ActiveRecord缓存吗?
1)像这样使用缓存:
$db = Yii::$app->db;// or Category::getDb()
$result = $db->cache(function ($db) use ($id) {
return Category::find()->where(['id' => $id])->all();
}, CACHE_TIMEOUT);
2)如果您可以使用查询依赖项,请像这样使用:
$db = Yii::$app->db;// or Category::getDb()
$dep = new DbDependency();
$dep->sql = 'SELECT count(*) FROM category';
$result = $db->cache(function ($db) use ($id) {
return Category::find()->where(['id' => $id])->all();
}, CACHE_TIMEOUT, $dep);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句