2012-05-28 38 views
6

Wie kann ich überprüfen, ob ein Datensatz erfolgreich mit Doctrine in symfony2 in die Datenbank eingefügt wurde?Überprüfen Sie, ob der Datensatz erfolgreich in Symfony2 eingefügt wurde.

Meine Aktion in der Steuerung ist

public function createAction(){ 
    $portfolio = new PmPortfolios(); 
    $portfolio->setPortfolioName('Umair Portfolio'); 
    $em = $this->getDoctrine()->getEntityManager(); 
    $em->persist($portfolio); 
    $em->flush(); 
    if(){ 
     $this->get('session')->setFlash('my_flash_key',"Record Inserted!"); 
    }else{ 
     $this->get('session')->setFlash('my_flash_key',"Record notInserted!"); 
    } 
} 

Was soll ich in der if Anweisung schreiben?

Antwort

19

Sie könnten Ihren Controller in einem try/catch Block wie diese wickeln:

public function createAction() { 
    try { 
     $portfolio = new PmPortfolios(); 
     $portfolio->setPortfolioName('Umair Portfolio'); 
     $em = $this->getDoctrine()->getEntityManager(); 
     $em->persist($portfolio); 
     $em->flush(); 

     $this->get('session')->setFlash('my_flash_key',"Record Inserted!"); 

    } catch (Exception $e) { 
     $this->get('session')->setFlash('my_flash_key',"Record notInserted!"); 
    } 
} 

Wenn der Einsatz fehlschlägt, wird eine Ausnahme ausgelöst und gefangen werden. Sie werden wahrscheinlich auch die Fehlermeldung in Ihrem catch-Block protokollieren wollen, indem Sie $e->getMessage() und/oder $e->getTraceAsString() aufrufen, was die Ausnahme erklärt.

+0

Wie kann ich verschiedene Divs anzeigen, je nach Erfolg und fehlender Insertion? –

+0

Fügen Sie eine Flash-Nachricht mit einem anderen Schlüssel hinzu - wie setFlash ('insert_failed', 'Your message') und machen Sie in Ihrer Zweigvorlage beispielsweise {% if app.session.hasFlash ('insert_failed')%}

{{ app.session.flash('insert_failed') }}
{% endif% } –

+0

ja ich tat es ... danke nochmal für die schnelle Antwort :) –

Verwandte Themen