首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原则2监听程序

原则2监听程序
EN

Stack Overflow用户
提问于 2013-06-05 20:23:27
回答 1查看 231关注 0票数 0

您好,我使用Doctrine 2侦听器检查用户组是否发生了更改。所以我有- {name: doctrine.event_listener, event: preUpdate },我的service.yml,方法被执行,我正在做这样的事情

代码语言:javascript
运行
复制
$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,因此更新前的对象应该不同。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 21:24:31

看一下Doctrine文档,看看您可以从preUpdate生命周期回调中获得什么:http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/events.html#preupdate

您可以直接访问原始值和更改后的值,因此不必查询数据库。

回答你的问题,为什么这两个值是相同的:我不是百分之百确定,但很可能EntityManager实际上理解你想要检索与你已经拥有的相同的对象,所以它不查询数据库就返回它。要再次实际查询数据库,您必须以某种方式刷新EM中的对象(这最终可能会丢失您的更改)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16939877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档