I have 2 entites : Information and PossibleAnswer Information can be seen as a question, depending on its type, it can have PossibleAnswers. It can also have a child Information, if the parent Information has PossibleAnswers, one of them will trigger the child dipslay.
Information class :
/** * @ORM\Entity(repositoryClass="App\Repository\InformationRepository") */ class Information { use DateTrait; /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @var string * * @ORM\Column(type="string") * @Assert\NotBlank() */ private $name; /** * @var string * * @ORM\Column(type="string") * @Assert\NotBlank() */ private $type; /** * @ORM\OneToMany(targetEntity="App\Entity\PossibleAnswer", mappedBy="information", cascade={"persist", "remove"}, orphanRemoval=true) */ private $possibleanswers; /** * One Information has Many Informations. * @ORM\OneToMany(targetEntity="Information", mappedBy="parent", cascade={"remove"}, orphanRemoval=true) * @ORM\OrderBy({"rank" = "ASC"}) */ private $children; /** * Many Informations have One Information. * @ORM\ManyToOne(targetEntity="Information", inversedBy="children") */ private $parent; /** * réponse qui déclenche une sous question * @ORM\ManyToOne(targetEntity="PossibleAnswer") */ private $trigger; PossibleAnswer class :
/** * @ORM\Entity(repositoryClass="App\Repository\PossibleAnswerRepository") */ class PossibleAnswer { use DateTrait; /** * @ORM\Id() * @ORM\GeneratedValue() * @ORM\Column(type="integer") */ private $id; /** * @ORM\ManyToOne(targetEntity="App\Entity\Information", inversedBy="possibleanswers") */ private $information; /** * @var string * * @ORM\Column(type="string") * @Assert\NotBlank() */ private $value; Now I want to delete a specific Information and delete every PossibleAnswer or child Information. But some delete cases are not working :
- Single Information : OK
- Information with child Information : OK
- Information with PossibleAnswers : OK
- Information with PossibleAnswers triggering a child Information : KO
- Information with child Information whit PossibleAnswers : KO
In case 4 :
An exception occurred while executing 'DELETE FROM possible_answer WHERE id = ?' with params [28]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
evisa.information, CONSTRAINTFK_297918835FDDDCD6FOREIGN KEY (trigger_id) REFERENCESpossible_answer(id))
In case 5 :
An exception occurred while executing 'DELETE FROM information WHERE id = ?' with params [56]:
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (
db.possible_answer, CONSTRAINTFK_3D79739D2EF03101FOREIGN KEY (information_id) REFERENCESinformation(id))
I'm missing something in my cascading to delete everything correctly, but I can't find what it is.