2012-05-28 3 views
6

Làm cách nào để kiểm tra xem bản ghi đã được chèn thành công vào cơ sở dữ liệu bằng Doctrine trong symfony2 chưa?Kiểm tra xem bản ghi đã được chèn thành công vào Symfony2

hành động của tôi trong bộ điều khiển là

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

tôi nên viết gì vào báo cáo kết if?

Trả lời

19

Bạn có thể bọc điều khiển của bạn trong một khối try/catch như thế này:

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

Nếu chèn thất bại, một ngoại lệ sẽ được ném và bắt. Bạn có thể cũng muốn đăng nhập thông báo lỗi bên trong khối catch của bạn bằng cách nào đó bằng cách gọi $e->getMessage() và/hoặc $e->getTraceAsString() sẽ giải thích ngoại lệ.

+0

Làm cách nào để hiển thị các div khác nhau trong chế độ xem theo thành công và không chèn được? –

+0

Thêm thông báo flash bằng một khóa khác - như setFlash ('insert_failed', 'Your message') và trong mẫu twig của bạn, hãy làm như sau {% if app.session.hasFlash ('insert_failed')%}

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

+0

vâng tôi đã làm điều đó ... cảm ơn một lần nữa vì phản ứng nhanh :) –