onDelete каскад не удаляет ребенка

У меня есть следующий класс и отношения:

/**
 * 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 ответ

Установлен ли каскад удаления для внешнего ключа в базе данных? При установке каскада на JoinColumn база данных должна управлять каскадом.

Попробуйте добавить , cascade={"remove"} к ManyToOne вместо JoinColumn, Таким образом, Доктрина будет управлять самим каскадом.

Другие вопросы по тегам