在symfony2
doctrine mongodb
,有没有办法捕获偶数postUpdate
或onFlush
或preUpdate
来检查文档中的字段是否已更新?我拥有的示例是一个文档Post
,其中包含字段:Id, name, description
。我有一个Listener service
,以便在Post
更新时捕获事件。
<?php
namespace Acme'Bundle'PostBundle'Listener;
use Doctrine'ODM'MongoDB'DocumentManager;
use Doctrine'ODM'MongoDB'Event'LifecycleEventArgs;
public function postUpdate(LifecycleEventArgs $eventArgs)
{
/* @var $odm DocumentManager */
$odm = $eventArgs->getDocumentManager();
$object = $eventArgs->getDocument();
if ($object instanceOf Post) {
// how to check if description field is updated
}
}
在preUpdate
期间,您可以检查文档的更改集:
public function preUpdate(PreUpdateEventArgs $e)
{
$e->getDocumentChangeSet();
$e->hasChangedField('description')
}
变更集是关联元组,看起来像
[ 'description' => [ 'old value', 'new value' ] ]
有关更多可用方法,您可以查看PreUpdateEventArgs
类