代理对象失败的设置属性,必须得到实际的对象

问题描述:

我有这样的代码,它不工作:代理对象失败的设置属性,必须得到实际的对象

$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();

+0

的可能的复制[设置Doctrine2实体属性而无需检索整个关联的对象] (http://*.com/questions/13007843/set-doctrine2-entity-property-without-retrieving-entire-associated-object) –

由于$accountObj没有被管理(或观看)由该实体管理器当flush方法被调用,不像$user其直接从$em取出。

如果您想更新$accountObj而不取另一个实例,你应该告诉实体管理器调用flush之前管理$accountObj对象:

$em->persist($accountObj); 
$em->flush();