2012-08-16 16 views
8

Gibt es eine Möglichkeit, Transaktionen in Symfony2 mit dem Entity Manager (Doktrin) manuell angeben, oder vielleicht eine natürliche Art und Weise in einer einzigen Transaktion zu erreichen, was ich unten in zwei tun?Transaktionen und Symfony2 Entity Manager

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

Siehe muss ich meine erste Einheit, um bündig es ist ID raus, so kann ich meine zweite Einheit zu meinem ersten ...

Antwort

7

Warum eröffnen Sie bitte einfach tun beziehen:

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

Hatte keine Ahnung, es war so einfach! Ich schätze, ich habe es komplizierter gemacht, als es sein musste. –

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

    // do your thing here 

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

@Elnur, ist '$ em-> getConnection()', vermissen Sie die '()', danke trotzdem –

+0

@ Kstro21, behoben. Vielen Dank. –

Verwandte Themen