2012-05-28 29 views
6

¿Cómo puedo verificar si un registro se ha insertado correctamente en la base de datos usando Doctrine en symfony2?Compruebe que el registro se haya insertado correctamente en Symfony2

Mi acción en el controlador es

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!"); 
    } 
} 

¿Qué debo escribir en la declaración if?

Respuesta

19

Usted puede envolver su controlador en un bloque try/catch así:

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!"); 
    } 
} 

Si el inserto falla, una excepción será lanzada y atrapada. Probablemente también desee registrar el mensaje de error dentro de su bloque catch de alguna manera llamando al $e->getMessage() y/o $e->getTraceAsString() que explicará la excepción.

+0

¿Cómo puedo visualizar diferentes divs a la vista según el éxito y la falla de inserción? –

+0

Agregue un mensaje flash con una clave diferente, como setFlash ('insert_failed', 'Your message') y en su plantilla twig hacer algo como {% if app.session.hasFlash ('insert_failed')%}

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

+0

sí, lo hice ... gracias de nuevo por la respuesta rápida :) –

Cuestiones relacionadas