1

Doctrine 1.* はレコードを保存した後にキャッシュをクリアしますか?

そうではないようです。どこかでできるかな?

4

1 に答える 1

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);
    }
}
于 2012-08-30T12:31:53.720 に答える