Doctrine 1. *保存记录后清除缓存吗?
似乎没有。我能在某个地方做到吗?
答案 0 :(得分:1)
不,不。每次保存对象时都应手动清除缓存。
正如描述in the doc,最好的方法是使用事件,特别是postSave
事件:
// lib/model/doctrine/User.class.php
class User extends BaseUser
{
// ...
public function postSave($event)
{
$cacheDriver = $this->getTable()->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE);
$cacheDriver->deleteByPrefix('users_');
}
}
您还可以构建自定义类来管理缓存清除(as describe here):
<?php
class myCache{
public static function clearRegexMatches($regex){
Doctrine_Manager::getInstance()
->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE)
->deleteByRegex($regex);
}
public static function clearOne($name){
Doctrine_Manager::getInstance()
->getAttribute(Doctrine_Core::ATTR_RESULT_CACHE)
->delete($name);
}
}