onDelete级联不删除子级

时间:2014-12-04 09:05:58

标签: php symfony orm doctrine-orm

我有以下课程和关系:

/**
 * App\MainBundle\Entity\PictureRenamer
 * @ORM\Table(name="app_picture_renamer")
 * @ORM\Entity(repositoryClass="App\MainBundle\Repository\PictureRenamerRepository")
 */
class PictureRenamer
{
    /**
     * @var integer $id
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="App\UserBundle\Entity\User", inversedBy="itemrenamer")
     * @ORM\JoinColumn(name="renamer_id", referencedColumnName="id", onDelete="CASCADE", nullable=false)
     */
    protected $renamer;

}


class InstagramShopPicture
{
     /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

      /**
     * @Exclude()   
     * @ORM\OneToMany(targetEntity="App\MainBundle\Entity\PictureRenamer", mappedBy="picture", cascade={"persist","remove"}, fetch="EXTRA_LAZY")
     */
    protected $renamer;

}

然而,为什么当我打电话给$em->remove($picture);然后我冲洗它,它没有删除图片重命名器?我做错了什么?

1 个答案:

答案 0 :(得分:0)

是否在数据库中的外键上设置了删除级联? 在JoinColumn上设置级联时,数据库应该管理级联。

尝试将, cascade={"remove"}添加到ManyToOne而不是JoinColumn。这样,Doctrine将管理级联本身。