无法在preUpdate Sonata中获取我的旧实体

时间:2018-04-13 16:07:25

标签: php symfony doctrine symfony-sonata

这是交易,我正在尝试更新实体,但我想将更新前的实体状态与更新后的实体状态进行比较。

我尝试比较实体中的用户数量。

例如,如果我添加一个用户,我希望我的代码知道,例如,我在更新之前有4个用户,之后有5个用户(并获得该用户以供进一步使用)。

在阅读了不同的主题后,我尝试在preUpdate($object){}方法

中这样做
$em = this->getConfigurationPool()->getContainer()->get('doctrine')->getManager();
$original = $em->getUnitOfWork()->getOriginalEntityData($object);

但两者

var_dump(count($object->getUsers()));
var_dump(count($original['users']));

给出相同的值,并且根据我的例子,两种情况下的值都是5(所以更新后的值)。

有没有办法可以在var中保存我的实体的old_state?我做错了什么?

编辑: 它不是Doctrine的preUpdate函数,而是SonataAdmin的preUpdate函数,不知道它们是否相同。

1 个答案:

答案 0 :(得分:0)

请在preUpdate函数中尝试:

    $em = $this->getModelManager()->getEntityManager($this->getClass());
    $original = $em->getUnitOfWork()->getOriginalEntityData($object);