2016-05-15 64 views
0

我有這樣的代碼,它不工作:代理對象失敗的設置屬性,必須得到實際的對象

$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://stackoverflow.com/questions/13007843/set-doctrine2-entity-property-without-retrieving-entire-associated-object) –

回答

0

由於$accountObj沒有被管理(或觀看)由該實體管理器當flush方法被調用,不像$user其直接從$em取出。

如果您想更新$accountObj而不取另一個實例,你應該告訴實體管理器調用flush之前管理$accountObj對象:

$em->persist($accountObj); 
$em->flush(); 
相關問題