关于删除级联主义

时间:2014-04-02 11:47:54

标签: php mysql symfony doctrine-orm foreign-keys

我想要链接两个实体:UserFolder

我想做的是:

  • 每个文件夹都有一个父文件夹(自引用),但可能没有(允许空值)。

  • 每个用户都有一个默认文件夹(我认为一对一)没有父文件夹。

  • 当我删除用户时,我希望MySQL自动删除默认文件夹和子文件夹。

我遇到的问题是因为我有FK而无法删除用户。 ErrorMessage:

#1451 - Cannot delete or update a parent row: a foreign key constraint fails (`supbox`.`folder`, CONSTRAINT `FK_EB0E0CFB7E3C61F9` FOREIGN KEY (`owner_id`) REFERENCES `user` (`id`)) 

我的实体:

<?php   
class User // Supbox\UserBundle\Entity\User
{


    [...]

   /**
     * @var integer
     * 
     * @ORM\ManyToOne(targetEntity="Supbox\CloudBundle\Entity\Folder")
     */
    private $folder;
}


class Folder // Supbox\CloudBundle\Entity\Folder
{


    [...]

    /**
     * @ORM\OneToOne(targetEntity="Supbox\UserBundle\Entity\User" , cascade={"remove"})
     * @ORM\JoinColumn(nullable=false)
     */
    private $owner;

     /**
     * @var integer
     * 
     * @ORM\ManyToOne(targetEntity="Supbox\CloudBundle\Entity\Folder")
     * @ORM\JoinColumn(nullable=true)
     */
    private $parent = null;
}

 ?>

1 个答案:

答案 0 :(得分:0)

您需要将cascade={"remove"}部分添加到用户实体中的$folder字段。