Doctrine 2.4 PreUpdate获取原始数据返回新数据?

时间:2014-08-28 17:53:15

标签: php symfony orm doctrine-orm

我在Doctrine2 Entity Listener中有这个代码,用于侦听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();
}

1 个答案:

答案 0 :(得分:4)

您可以使用以下方法访问更改集:

getEntityChangeSet()

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

hasChangedField($field)

如果你想得到一个字段的旧值:

getOldValue($field)

有关详细信息,请参阅:

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