我正在尝试在执行时捕获异常:
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无法删除或 更新父行:外键约束失败 (
trainingexperience
。internship
,CONSTRAINTFK_10D1B00C2CA1BD71
外键(education_id
)参考trainee_education
(id
))
我知道为什么我的约束失败了,没有什么新东西。但是我希望得到一个例外,这样我就可以告诉用户他不能删除一个对象,而不是在创建关系之前使用它。
答案 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));
}
我不知道是否是最好的解决方案,但有效。