【问题标题】:Doctrine 2.4 PreUpdate get Original Data returns new data?Doctrine 2.4 PreUpdate get Original Data 返回新数据?
【发布时间】:2014-10-22 16:27:09
【问题描述】:

我的 Doctrine2 实体监听器中有这段代码,它监听 PreUpdate 事件。 为什么原始实体数据包含新数据而不是旧数据?

/**
 * @param PreUpdateEventArgs $args
 */
public function preUpdate(PreUpdateEventArgs $args)
{
    $em = $args->getEntityManager();
    $uow = $em->getUnitOfWork();

    $original = $uow->getOriginalEntityData($args->getEntity());

    echo $original['name']; // THIS OUTPUTS THE NEW NAME ???
    die();
}

【问题讨论】:

    标签: php symfony orm doctrine-orm


    【解决方案1】:

    您可以通过以下方法访问更改集:

    getEntityChangeSet()
    

    如果您想测试某个字段是否已更改,您可以使用:

    hasChangedField($field)
    

    如果要获取某个字段的旧值:

    getOldValue($field)
    

    欲了解更多信息,请参阅:

    http://www.doctrine-project.org/api/orm/2.2/source-class-Doctrine.ORM.Event.PreUpdateEventArgs.html#_getEntityChangeSet

    【讨论】:

    • 感谢@sebbo,但这只会让我访问更改的属性,而不是所有旧属性(我需要)。
    • 啊,好吧,对不起。以为您只需要某些字段。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-28
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多