我有一個包含兩個生命週期事件方法的事件訂戶:prePersist和preUpdate。 prePersist之一按預期工作 - 我修改文檔,稍後在檢索文檔時反映這些更改。儘管如此,preUpdate沒有按預期工作。這基本上是什麼樣子:保留對Doctrine的PreUpdate生命週期事件對文檔所做的更改
/**
* Also update the foo code when the bar profile is updated.
* @param LifecycleEventArgs $args
*/
public function preUpdate(LifecycleEventArgs $args)
{
$document = $args->getDocument();
if ($document instanceof BarProfile) {
$document->setFooCode('Salamanders');
}
}
如果我創建一個文檔,然後在perPersist功能設置其fooCode爲「佔位符」,然後當我檢索文件後,它fooCode是「佔位符」。如果我然後更新它,並再次檢索它,那麼我希望它的fooCode是'Salamanders'。但是,它仍然是'佔位符'。我甚至試過把error_log()
的東西放在那裏,它會把東西寫到日誌中,這樣我就可以看到這個方法正在執行。
在$document->setFooCode()
之後,我需要做的第二步是讓fooCode的新值保持不變?
閱讀細則和示例:http://doctrine-orm.readthedocs.org/en/latest/reference/events.html#preupdate。很多人都被這個問題絆倒了。 – Cerad
我確實讀過......但我不明白這是什麼意思,直到下面的答案解釋它。 – beth
我實際上最終在http://doctrine-mongodb-odm.readthedocs.org/en/latest/reference/events.html#preupdate中使用瞭解決方案,因爲我無法識別我正在更改的屬性名稱在物體上。 – beth