Итак, у меня есть сущность пользователя и сущность отдела:
/**
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="department")
*/
private $employees;
а также
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Department", inversedBy="employees")
*/
private $department;
И я использую EasyAdmin Bundle. Я хочу иметь возможность удалить отдел, в котором есть сотрудники, но не удаляя их. но я всегда получаю эту ошибку:
Существует исключение ForeignKeyConstraintViolationException для объекта Doctrine, связанного с "Department". Решение: отключите действие «удалить» для этой сущности или настройте атрибут «cascade = {" remove "}» для связанного свойства в сущности Doctrine. Полное исключение: исключение произошло при выполнении 'УДАЛИТЬ ИЗ отдела WHERE id =?' с params [4]:
Я попытался переопределить событие easy_admin.pre_delete, добавив эту функцию, чтобы удалить все ассоциации перед удалением моей сущности:
public static function getSubscribedEvents()
{
return array(
'easy_admin.pre_delete' => array('deleteAssociations'),
);
}
public function deleteAssociations(GenericEvent $event) {
$entity = $event->getSubject();
if (!($entity instanceof Department)) {
return;
}
foreach($entity->getEmployees() as $employee) {
$entity->removeEmployee($employee);
}
$event['entity'] = $entity;
}
но он по-прежнему показывает ту же ошибку. если кто-то знает почему, спасибо за любой ответ