如何在特定表记录中发生某些更改时处理它?
public static function getAirportWithCache($iata_code){
$result = Airports::getDb()->cache(function ($db) use ($iata_code){
$res = Airports::find()
->where(['iata_code' => $iata_code])
->limit(1)
->asArray()
->one();
return $res;
});
return $result;
}
Run Code Online (Sandbox Code Playgroud)
对于全局缓存,可以使用:
Yii::$app->cache->flush();
Run Code Online (Sandbox Code Playgroud)
对于特定的,您可以使用TagDependency:
//way to use
return Yii::$app->db->cache(function(){
$query = new Query();
return $query->all();
}, 0, new TagDependency(['tags'=>'cache_table_1']));
//way to flush when modify table
TagDependency::invalidate(Yii::$app->cache, 'cache_table_1');
Run Code Online (Sandbox Code Playgroud)
请参阅文档http://www.yiiframework.com/doc-2.0/yii-caching-tagdependency.html
只需在任何地方执行Yii::$app->cache->flush();(可能在您的控制器中)
PS:它将删除服务器中存储的整个缓存
| 归档时间: |
|
| 查看次数: |
10807 次 |
| 最近记录: |