2012-08-30 32 views

回答

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); 
    } 
}