我有以下课程和关系:
/**
* 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);
然后我冲洗它,它没有删除图片重命名器?我做错了什么?
答案 0 :(得分:0)
是否在数据库中的外键上设置了删除级联?
在JoinColumn
上设置级联时,数据库应该管理级联。
尝试将, cascade={"remove"}
添加到ManyToOne
而不是JoinColumn
。这样,Doctrine将管理级联本身。