我有一个这样的代码,但它不起作用:
$em = $this->container->get('doctrine.orm.entity_manager');
$accountObj->setHasCheckpoint(1);
$em->flush();
我不得不做以下事情:
$em = $this->container->get('doctrine.orm.entity_manager');
$user = $em->getRepository('UserBundle:User')->findOneById($accountObj->getId());
$user->setHasCheckpoint(1);
$em->flush();
为了获得要设置的检查点。为什么会这样?accountObj只是另一个$entity->getUser();
因为在调用flush
方法时,$accountObj
不由实体管理器管理(或监视),而$user
是直接从$em
获取的。
如果您想在不获取另一个实例的情况下更新$accountObj
,那么在调用flush
:之前,您应该告诉实体管理器管理$accountObj
对象
$em->persist($accountObj);
$em->flush();