您好,我使用Doctrine 2侦听器检查用户组是否发生了更改。所以我有- {name: doctrine.event_listener, event: preUpdate }
,我的service.yml
,方法被执行,我正在做这样的事情
$user = $args->getEntity();
$em = $args->getEntityManager();
if($user instanceof \iTracker\UserBundle\Entity\User) {
$u = $em->getRepository('UserBundle:User')->find($user->getId());
var_dump($u->getUserGroup());
var_dump($user->getUserGroup());
}
这两个物体是一样的。是否应该使用旧用户组的对象$u
和使用新组的$user ??事件为preUpdate,因此更新前的对象应该不同。
发布于 2013-06-05 21:24:31
看一下Doctrine文档,看看您可以从preUpdate
生命周期回调中获得什么:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate
您可以直接访问原始值和更改后的值,因此不必查询数据库。
回答你的问题,为什么这两个值是相同的:我不是百分之百确定,但很可能EntityManager
实际上理解你想要检索与你已经拥有的相同的对象,所以它不查询数据库就返回它。要再次实际查询数据库,您必须以某种方式刷新EM中的对象(这最终可能会丢失您的更改)。
https://stackoverflow.com/questions/16939877
复制相似问题