这是交易,我正在尝试更新实体,但我想将更新前的实体状态与更新后的实体状态进行比较。
我尝试比较实体中的用户数量。
例如,如果我添加一个用户,我希望我的代码知道,例如,我在更新之前有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函数,不知道它们是否相同。
答案 0 :(得分:0)
请在preUpdate函数中尝试:
$em = $this->getModelManager()->getEntityManager($this->getClass());
$original = $em->getUnitOfWork()->getOriginalEntityData($object);