Php Symfony 2删除具有oneToMany关系的实体

Php Symfony 2删除具有oneToMany关系的实体,php,symfony,Php,Symfony,在我的Gecko.php中,我有以下部分: /** * @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId") */ private $weights; 在我的Weight.php中,我有: /** * @ORM\ManyToOne(targetEntity="Gecko", inversedBy="weights") * @ORM\JoinColumn(name="gecko_id", refe

在我的
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;
我的gecko删除操作如下:

/**
 * 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删除,其中id=?”时发生异常 使用参数[5]:

SQLSTATE[23000]:完整性约束冲突:1451无法删除或删除 更新父行:外键约束失败 (
breedr
weight
,CONSTRAINT
FK_615077FC45D556
外键 (
gecko\u id
)参考文献
gecko
id

我不知道如何解决这个问题。当数据库中没有特定壁虎的权重时,它们会很好地删除,但如果有任何权重,则不会删除。理想情况下,我希望能够在删除壁虎的同时删除所有重量数据

提前谢谢


Andy

如果在删除父实体之前不手动删除其拥有的实体,则会出现如下错误。您可以在删除父实体之前遍历所有拥有的实体并手动删除它们,也可以将条令设置为自动级联删除操作:


将级联操作添加到权重中,这样每当Gecko被更新或删除时,与它相关的权重也会被更新/删除。

不确定为什么会有人对此进行否决,这个问题没有错?在标题中使用Gecko有什么原因吗?Gecko是Firefox-s的英文版,也许有人把它弄糊涂了。你可以通过用实体替换gecko来改进标题。这是一个公平的观点,只是在我的情况下才提到:)现在已经改变了@a.L
/**
 * @ORM\OneToMany(targetEntity="Weight", mappedBy="geckoId", cascade={"persist", "remove"})
*/
private $weights;