【问题标题】:Doctrine EventListener onFlush access to old DocumentDoctrine EventListener onFlush 访问旧 Document
【发布时间】:2017-03-27 05:06:46
【问题描述】:

我可以在 Doctrine2 的 onFlush eventListerner 中访问更新的文档。 我想要完整的旧文档将其作为旧状态存储在其他地方。

   public function onFlush(OnFlushEventArgs $eventArgs)
    {
        $dm = $eventArgs->getDocumentManager();

        $uow = $dm->getUnitOfWork();
        foreach ($uow->getScheduledDocumentUpdates() as $document) {
            // $document is updated document
            // $changeSet contains only new and old values
            $changeSet = $uow->getDocumentChangeSet($document);

            // I want the whole old document object as $oldDocument
        }       
    }

我如何才能访问旧文档而不仅仅是更改集?

【问题讨论】:

  • 你应该监听preUpdate事件:在那里你可以得到你需要的。

标签: mongodb symfony doctrine-orm event-listener odm


【解决方案1】:

只需使用 preUpdate 事件。示例:

public function preUpdate(PreUpdateEventArgs $event)
{
    $entity = $event->getEntity(); // the whole entity
    $changeSet = $event->getEntityChangeSet(); // only changed properties

    // check if password has been changed
    if ($event->hasChangedField('password')) { 
        // do stuff
    }

    /* ... */
}

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2013-10-28
    • 1970-01-01
    • 2018-12-27
    • 2014-06-29
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多