2012-08-16 17 views
8

Symfony2'deki işlemleri, varlık yöneticisi (doktrin) ile manuel olarak belirtmenin bir yolu var mı, yoksa tek bir işlemde, aşağıda iki yaptığım şeyi gerçekleştirmenin doğal bir yolu olabilir mi? transaction and symfony2 varlık yöneticisi

// creating screen object... 
//Creating user object... 

     //flush the screen into database in order to get the Id to relate the server (user) to 
     $em->persist($screen); 
     $em->flush(); 

     //Get id of just inserted screen and attach that to new server (user) 
     $tempRecordId = $screen->getId(); 
     $tempEntity = $em->getRepository('BizTVContainerManagementBundle:Container')->find($tempRecordId); 
     $entity->setScreen($tempEntity); 

     //Flush the user also into database 
     $em->persist($entity); 
     $em->flush(); 

cevap

7

Neden sadece bunu verip ... Ben Kimlik dışarıda almak için benim ilk varlık temizlemek gerekir, bu yüzden benim ilk benim ikinci varlık ilgili olabilir Bkz:

// creating screen object... 
//Creating user object... 
    $entity->setScreen($screen); 
    $em->persist($screen); 
    $em->persist($entity); 
    $em->flush(); 
+0

Hiçbir şey bu kadar kolay olmamıştı! Sanırım, olması gerekenden daha karmaşık hale getiriyordum! –

22
try { 
    $em->getConnection()->beginTransaction(); 

    // do your thing here 

    $em->getConnection()->commit(); 
} catch (\Exception $e) { 
    $em->getConnection()->rollback(); 
    throw $e; 
} 
+0

@Elnur, '$ em-> getConnection()' dır, '()' özledim, teşekkürler –

+0

@ Kstro21, sabit. Teşekkürler. –