Doctrine 1.* 保存记录后是否清除缓存?
好像没有。我可以在某个地方做吗?
不,它没有。每次保存对象时都应该手动清除缓存。
如文档中所述,最好的方法是使用事件,特别是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_');
}
}
您还可以构建一个自定义类来管理缓存清除(如此处所述):
<?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);
}
}