У меня есть 2 объекта: Информация и Возможный ответ Информация может рассматриваться как вопрос, в зависимости от его типа, он может иметь Возможный ответ .Он также может иметь дочерний элемент Информация , если родительский элемент Информация имеет Возможный ответ , один из них вызовет дочерний дипслай.
Информация класс:
/**
* @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;
Возможный ответ класс:
/**
* @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;
Теперь я хочу удалить конкретную информацию и удалить каждую возможную информацию или дочернюю информацию.Но некоторые случаи удаления не работают:
- Одиночная информация: OK
- Информация с ребенком Информация: OK
- Информация с возможными ответами: OK
- Информация с возможными ответами, вызывающими ребенка Информация: КО
- Информация с ребенком Информация с возможными ответами: КО
В случае 4:
Возникла исключительная ситуация при выполнении команды "УДАЛИТЬ ИЗ ВОЗМОЖНОГО_ОБЪЕКТА WHERE id =?"с параметрами [28]:
SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется (evisa
. information
, CONSTRAINT FK_297918835FDDDCD6
FOREIGN KEY(trigger_id
) ССЫЛКИ possible_answer
(id
))
В случае 5:
Возникла исключительная ситуация при выполнении операции «УДАЛИТЬ ИЗ ИНФОРМАЦИИ», ГДЕ id =?'с параметрами [56]:
SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполняется (db
. possible_answer
, CONSTRAINT FK_3D79739D2EF03101
FOREIGN KEY(information_id
) ССЫЛКИ information
(id
))
Мне не хватает чего-то в моем каскадировании, чтобы удалить все правильно, но я не могу найти, что это такое.