一个实体项目可以有很多人,很多chapitres,每个项目一个highConcept。并且用户可以有很多项目。然后,当我想删除一个项目时,我收到以下错误消息:
执行“DELETE FROM projets WHERE id = ?”时发生异常 使用参数 [2]:
SQLSTATE[23000]: 完整性约束违规:1451 无法删除或更新父行:外键约束失败 (
writtle
.personnages
, CONSTRAINTFK_286738A6C18272
FOREIGN KEY (projet_id
) REFERENCESprojets
(id
))
这是我的实体:
实体字符
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Chapitre", mappedBy="personnages")
* @ORM\JoinColumn(name="projet_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $chapitres;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Projets", inversedBy="personnages")
* @ORM\JoinColumn(name="projet_id", referencedColumnName="id", onDelete="CASCADE")
*/
private $projet;
项目实体
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="projets")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Personnages", mappedBy="projet")
*/
private $personnages;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Chapitre", mappedBy="projet", cascade={"remove"})
* @ORM\joinColumn(onDelete="SET NULL")
*/
private $chapitres;
实体篇
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Projets", inversedBy="chapitres")
*/
private $projet;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Personnages", inversedBy="chapitres")
*/
private $personnages;
高概念
/**
* @ORM\OneToOne(targetEntity="App\Entity\Projets", cascade={"persist", "remove"})
*/
private $projet;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="highconcepts")
*/
private $user;
用户实体
/**
* @ORM\OneToMany(targetEntity="App\Entity\Projets", mappedBy="user")
*/
private $projets;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Highconcept", mappedBy="user")
*/
private $highconcepts;
我不知道如何将其联系起来,我尝试了一些类似的事情JoinColumn
ondelete
cascade
......我看到了一些主题,但我认为我正确地使用了它。
考虑到您要删除项目中包含的所有实体,我建议您使用Doc 中orphanRemoval
解释的选项。
级联的另一个概念只有在从集合中删除实体时才相关。如果类型 A 的实体包含对私有实体 B 的引用,那么如果从 A 到 B 的引用被删除,则实体 B 也应该被删除,因为它不再被使用。
使您的实体成员看起来像:
/**
* @ORM\OneToMany(targetEntity="App\Entity\Personnages", mappedBy="projet", orphanRemoval=true)
*/
private $personnages;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句