Symfony2 - $ em-> remove()

时间:2017-02-15 09:52:27

标签: symfony exception doctrine-orm doctrine entitymanager

我正在尝试在执行时捕获异常:

try {
    $em->remove($education);
    $em->flush();
} catch(PDOException $e) {
    var_dump($e->getMessage());
    die;
}

我还尝试了\Exception\Doctrine\ORM\ORMException,但都没有效果。

而不是转储异常消息我得到了同样的错误,我试图避免捕获异常:

  

[3/3] ForeignKeyConstraintViolationException:发生异常   执行'DELETE FROM trainee_education WHERE id =?'同   params [2]:

     

SQLSTATE [23000]:完整性约束违规:1451无法删除或   更新父行:外键约束失败   (trainingexperienceinternship,CONSTRAINT FK_10D1B00C2CA1BD71   外键(education_id)参考trainee_educationid))

我知道为什么我的约束失败了,没有什么新东西。但是我希望得到一个例外,这样我就可以告诉用户他不能删除一个对象,而不是在创建关系之前使用它。

1 个答案:

答案 0 :(得分:4)

我有相同的情况,但我使用\ Doctrine \ DBAL \ DBALException

try{

      $em->persist($question);
      $em->flush();
} catch (\Doctrine\DBAL\DBALException $e) {

      $exception_message = $e->getPrevious()->getCode();
    return $this->render('AppBundle:Errors:error.html.twig', array('error' => $exception_message)); 

} 

我不知道是否是最好的解决方案,但有效。