и извините за мой английский, я француз, поэтому я использую переводчик. Вот часть моей модели, чтобы проиллюстрировать мои слова:
Так вот в чем проблема. Я на своей странице настроек администратора. На этой странице я смогу добавлять / удалять типы праздников. Но когда я удаляю типы праздников, он должен был бы удалять вещи, каскадные в базе данных.
На самом деле принцип сайта следующий:
Пользователи спрашивают о своих выходных. Для этого они дают вид отпуска, для которого они будут отсутствовать. И для каждого типа праздников у пользователей есть баланс.
Итак, у меня есть это:
ParametresAdmin.php:
/**
* @ORM\OneToMany(targetEntity="App\Entity\TypeConge", mappedBy="parametresAdmin", orphanRemoval=true, cascade={"persist", "remove"})
*/
private $typesConges;
TypeConge.php:
/**
* @ORM\Column(type="string", length=255, unique=true)
*/
private $nom;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Absence", mappedBy="typeConge", cascade={"persist", "remove"})
*/
private $absences;
SoldeConges.php:
/**
* @ORM\ManyToOne(targetEntity="App\Entity\TypeConge", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $typeConge;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="soldeConges")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\Column(type="float", nullable=true)
*/
private $solde;
Absence.php:
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="absences")
* @ORM\JoinColumn(nullable=false)
*/
private $user;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\TypeConge", inversedBy="absences")
* @ORM\JoinColumn(nullable=false)
*/
private $typeConge;
User.php:
/**
* @ORM\OneToMany(targetEntity="App\Entity\SoldeConges", mappedBy="user", orphanRemoval=true, fetch="EAGER", cascade={"remove"})
*/
private $soldeConges;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Absence", mappedBy="user", orphanRemoval=true)
*/
private $absences;
Итак, в моих настройках администратора, если я удаляю тип отпуска, он должен следовать этому шаблону:
- Подавление отсутствий, связанных с типом отпуска.
- Удаление «soldeUser» из пользователя для балансов, связанных с типом отпуска.
- Подавление 'typeConge '(тип праздника)
Но с моим кодом у меня возникает эта ошибка при попытке удалить тип праздника:
Исключительная ситуация при выполнении'DELETE FROM type_conge WHERE id =?'с параметрами [9]:
SQLSTATE [23000]: нарушение ограничения целостности: 1451 Невозможно удалить или обновить родительскую строку: ограничение внешнего ключа не выполнено (congestest2
. solde_conges
, CONSTRAINT FK_BE0A8BDB753BDA5
FOREIGN KEY(type_conge_id
) ССЫЛКИ type_conge
(id
))