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
, Таким образом, Доктрина будет управлять самим каскадом.