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