【发布时间】:2019-12-06 14:23:49
【问题描述】:
一个实体项目可以有很多人,很多章,每个项目有一个高概念。并且用户可以有很多项目。然后,当我想删除一个项目时,我会收到以下错误消息:
执行“DELETE FROM projets WHERE id = ?”时发生异常带参数 [2]:
SQLSTATE[23000]:完整性约束违规:1451 无法删除或更新父行:外键约束失败(
writtle.personnages,约束FK_286738A6C18272外键(projet_id)参考projets(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;
我不知道我怎么能把它联系起来,我尝试了一些类似JoinColumnondeletecascade...
我看到了一些主题,但我认为我正确地使用了它。
【问题讨论】:
-
在删除项目时,是否要同时删除所有相关实体?
-
感谢您的回答,是的,如果用户点击删除,则必须删除所有相关实体
标签: symfony