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缓存?
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)
归档时间: |
|
查看次数: |
10118 次 |
最近记录: |