Yii2 ActiveRecord缓存

Ale*_*lex 5 activerecord caching yii yii2

如何为Yii 2使用ActiveRecotd缓存?我在官方文档中找不到任何例子.在谷歌我发现了2个例子,首先是:

$db = self::getDb();
$object = $db->cache(function ($db) use($id) {
    return self::findOne($id);
});
Run Code Online (Sandbox Code Playgroud)

但它不起作用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);
}
Run Code Online (Sandbox Code Playgroud)

它工作正常,但不是ActiveRecord缓存它的数据缓存,所以我们在Yii 2中没有ActiveRecord缓存?

vit*_*_74 7

1)使用缓存:

$db = Yii::$app->db;// or Category::getDb()
$result = $db->cache(function ($db) use ($id) {
    return Category::find()->where(['id' => $id])->all();
}, CACHE_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)

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);
Run Code Online (Sandbox Code Playgroud)