我有使用post save hook的doctrine模型类:
class MyClass extends BaseMyClass
{
public function postSave($event)
{
myFunctionCache::getInstance()->remove(MyClassTable::CACHE_KEY_PREFIX);
}
}
我希望在保存mysql中MyClass对象的更改后按键清除redis数据,并且在没有重载db的情况下工作,但现在在mysql中应用更改数据之前清除redis。我在寻找原因并找到了sfFormObject :: save
try
{
$con->beginTransaction();
$this->doSave($con);
$con->commit();
}
catch (Exception $e)
{
$con->rollBack();
throw $e;
}
和postSave挂钩在doSave中调用,但在此提交之后。我尝试通过将myListener添加到连接来使用postTransactionCommit,但它对我没有帮助。 然后我尝试添加自己的钩子到doctrine记录并在提交后触发它:
{
$con->beginTransaction();
$this->doSave($con);
$con->commit();
$event = new Doctrine_Event($this, Doctrine_Event::TX_COMMIT);
$this->getObject()->postCommit($event);
}
这也没有成功。有什么建议吗?