2016-05-15 2 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(); 

を取得してチェックポイントを設定する必要があります。どうしてこれなの? flushメソッドが呼び出されたとき$emから直接フェッチさ$user異なり、エンティティマネージャによって accountObjはちょうど別の$entity->getUser();

+0

の可能性のある重複した[全体の関連するオブジェクトを取得せずにDoctrine2エンティティプロパティを設定] (http://stackoverflow.com/questions/13007843/set-doctrine2-entity-property-without-retrieving-entire-associated-object) –

答えて

0

ため$accountObjが管理されていませんでした(またはを見ました)。

あなたが別のインスタンスを取得せずに$accountObjを更新したい場合は、あなたがflushを呼び出す前$accountObjオブジェクトを管理するために、エンティティマネージャを教えてください:

$em->persist($accountObj); 
$em->flush(); 
関連する問題