在删除实体时,我经常手动检查该实体是否未链接到其他实体,然后再将其删除:
public function deleteAction(Operation $operation)
{
if ($operation->getArticles()->isEmpty() && $operation->getMessages()->isEmpty()) {
$em = $this->getDoctrine()->getManager();
$em->remove($operation);
$em->flush();
$this->addFlash('success', sprintf("Operation deleted", $operation));
} else {
$this->addFlash('danger', sprintf("Can't delete operation.", $operation));
}
return $this->redirectToRoute('operation');
}
但是这种方法意味着知道实体与其他实体之间的所有关系,因此我必须检查每个实体。
有时使用try...catch
很有用,但是删除并不总是引发异常。
在删除实体之前,还有另一种(更通用的)方式来检查是否存在对我实体的引用吗?