Symfony2 原则如何检查文档中的字段已更新


symfony2 doctrine how to check a field in document is updated

symfony2 doctrine mongodb,有没有办法捕获偶数postUpdateonFlushpreUpdate来检查文档中的字段是否已更新?我拥有的示例是一个文档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