如果我尝试删除在数据库中链接记录的记录,我会尝试抛出用户友好的错误消息。我希望解决方案更通用:目标是让一个侦听器听取某种事件。删除记录的基本操作是:
public function deleteAction(Request $request, $id)
{
$form = $this->createDeleteForm($id);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('Bundle:Entity')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Entity entity.');
}
$em->remove($entity);
$em->flush();
$request->getSession()->getFlashBag()->add(
'success',
$this->get('translator')->trans('Entity ' . $entity->getName(). ' was deleted successfully!')
);
}
return $this->redirect($this->generateUrl('route'));
}
现在它抛出一个Doctrine\DBAL\DBALException
。当然我们可以放一个try/catch
块,但我必须把它放在我的每一个动作中。
另一个解决方案是确定某个实体是否已关联,但我似乎无法找到如何实现这一目标。
有什么建议吗?