Php 检查记录是否已成功插入Symfony2

Php 检查记录是否已成功插入Symfony2,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,如何使用symfony2中的条令检查记录是否成功插入数据库 我在控制器中的操作是 public function createAction(){ $portfolio = new PmPortfolios(); $portfolio->setPortfolioName('Umair Portfolio'); $em = $this->getDoctrine()->getEntityManager(); $em->persist($portf

如何使用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
语句中写什么?

您可以将控制器包装在
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->getraceastring()
将错误消息记录在catch块中,这将解释异常情况。

如何根据插入的成功与失败在视图中显示不同的div?使用不同的键(如setFlash)添加一条flash消息('insert_failed','Your message'),并在您的小树枝模板中执行类似{%if app.session.hasFlash('insert_failed')%%}{{app.session.flash('insert_failed')}{%endif%}的操作。也许您应该在catch块中调用entitymanager的回滚方法。据我所知,如果flush()失败,回滚将自动完成。