![](/img/trans.png)
[英]Doctrine symfony remove entity with OneToMany - ManyToOne relationship
[英]Symfony 2 deleting entity with a oneToMany relationship
在我的Gecko.php
我有以下部分:
/**
* @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId")
*/
private $weights;
在我的Weight.php
我有這個:
/**
* @ORM\ManyToOne(targetEntity="Gecko", inversedBy="weights")
* @ORM\JoinColumn(name="gecko_id", referencedColumnName="id")
*/
private $geckoId;
我的壁虎刪除操作如下:
/**
* Deletes a Gecko entity.
*
* @Route("/{name}", name="gecko_delete")
* @Method("DELETE")
*/
public function deleteAction(Request $request, $name)
{
$form = $this->createDeleteForm($name);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('BreedrGeckoBundle:Gecko')->findOneByName($name);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Gecko entity.');
}
$em->remove($entity);
$em->flush();
}
return $this->redirect($this->generateUrl('gecko'));
}
當我單擊表單中的刪除按鈕時,出現此錯誤:
執行“從Gecko WHERE id =?刪除”時發生異常。 帶有參數[5]:
SQLSTATE [23000]:完整性約束違規:1451無法刪除或更新父行,外鍵約束失敗(
breedr
。weight
,約束FK_615077FC45D556
外鍵(gecko_id
)參考文獻Gecko
(id
))
我不知道如何解決此問題。 當數據庫中沒有特定壁虎的權重時,它們會被刪除,但是如果有任何權重,則不會刪除。 理想情況下,我希望能夠在刪除壁虎的同時刪除所有體重數據
提前致謝
安迪
如果在刪除父級實體之前沒有手動刪除其擁有的實體,則會出現類似的錯誤。 您可以遍歷所有擁有的實體並在刪除父實體之前手動將其刪除,也可以將Doctrine設置為自動級聯刪除操作:
/**
* @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId", cascade={"persist", "remove"})
*/
private $weights;
向權重添加級聯操作,因此每當壁虎被更新或刪除時,與其相關的權重也將被更新/刪除。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.