簡體   English   中英

Symfony 2刪除具有oneToMany關系的實體

[英]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無法刪除或更新父行,外鍵約束失敗( breedrweight ,約束FK_615077FC45D556外鍵( gecko_id )參考文獻Geckoid ))

我不知道如何解決此問題。 當數據庫中沒有特定壁虎的權重時,它們會被刪除,但是如果有任何權重,則不會刪除。 理想情況下,我希望能夠在刪除壁虎的同時刪除所有體重數據

提前致謝

安迪

如果在刪除父級實體之前沒有手動刪除其擁有的實體,則會出現類似的錯誤。 您可以遍歷所有擁有的實體並在刪除父實體之前手動將其刪除,也可以將Doctrine設置為自動級聯刪除操作:

學說級聯運算

/**
 * @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId", cascade={"persist", "remove"})
*/
private $weights;

向權重添加級聯操作,因此每當壁虎被更新或刪除時,與其相關的權重也將被更新/刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM