Doctrine Symfony4:删除同一实体上的OneToMany和OneToOne时的问题
我有一个技巧实体,它包含与同一实体的OneToOne($mainImage)和OneToMany($images)关联。 我不能删除一个技巧:它告诉我存在外键约束。 当然,因为$mainImage有一个用于图像的FK,而图像有一个用于技巧的外键 如果我手动清空$main图像并在删除前刷新,它会工作,但这很棘手,我无法忍受对我的代码的倾斜性如此不关心 我认为围绕教义的“级联”或“孤儿移除”属性可以做一件事,但是,正如你们在下面看到的,我已经尝试了所有这些属性,但我仍然得到了错误Doctrine Symfony4:删除同一实体上的OneToMany和OneToOne时的问题,doctrine,foreign-keys,symfony4,Doctrine,Foreign Keys,Symfony4,我有一个技巧实体,它包含与同一实体的OneToOne($mainImage)和OneToMany($images)关联。 我不能删除一个技巧:它告诉我存在外键约束。 当然,因为$mainImage有一个用于图像的FK,而图像有一个用于技巧的外键 如果我手动清空$main图像并在删除前刷新,它会工作,但这很棘手,我无法忍受对我的代码的倾斜性如此不关心 我认为围绕教义的“级联”或“孤儿移除”属性可以做一件事,但是,正如你们在下面看到的,我已经尝试了所有这些属性,但我仍然得到了错误 class Tri
class Trick
{
/**
* @ORM\OneToMany(targetEntity="App\Entity\Image", mappedBy="trick", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $images;
/**
* @ORM\OneToOne(targetEntity="App\Entity\Image", cascade={"persist", "remove"}, orphanRemoval=true)
* @JoinColumn(name="main_image_id", referencedColumnName="id", onDelete="set null")
*/
private $mainImage;
}
以及图像实体:
class Image
{
/**
* @ORM\ManyToOne(targetEntity="Trick", inversedBy="images")
* @ORM\JoinColumn(nullable=false)
*/
private $trick;
}
有人能帮我吗?
你会得到我所有的感激 您必须先删除setter中的元素
public function setImage($image){
if($this->image !== null) // first remove old one from images
$this->images->removeElement($this->image);
$this->image = $image;
}
反之亦然:如果要从阵列中删除图像,请首先检查其是否为当前图像,然后将其删除