2012-05-28 57 views
6

如何使用symfony2中的Doctrine檢查記錄是否已成功插入數據庫中?檢查記錄是否成功插入到Symfony2中

我的控制器動作

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

我應該在if聲明寫?

回答

19

你可以換一個try/catch塊這樣的控制器:

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

如果插入失敗,將引發異常並捕獲。您可能還想通過調用$e->getMessage()和/或$e->getTraceAsString()以某種方式在錯誤消息中記錄錯誤消息,這將解釋異常。

+0

根據成功和插入失敗,我如何在視圖中顯示不同的div? –

+0

添加閃光燈消息使用不同的密鑰 - 像setFlash(「insert_failed」,「你的消息」),並在樹枝模板做類似{%如果app.session.hasFlash(「insert_failed」)%} {

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

+0

是的,我做到了......再次感謝您的快速響應:) –