yaleksandr89
@yaleksandr89
PHP developer

Как реализовать правильное удаление связанных данных в Symfony?

Здравствуйте!

Никак не могу решить, как реализовать запрет удаления записи с выводом предупреждения/исключения.

Имею две сущности
List.php
/**
* @ORM\ManyToOne (targetEntity="Download\Entity\Status", inversedBy="request")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
protected $status;
    
Status.php
/**
* @ORM\OneToMany(targetEntity="Download\Entity\List", mappedBy="status",
* cascade={"persist"}, orphanRemoval=true)
*/
protected $request;


В приведенном выше примере, при удаление объекта из Status.php удаляются все связанные с ним объекты их List.php. Возможно ли реализовать удаление следующим образом: "при попытке удалить объект Status.php выводить сообщение вроде: 'Удаление невозможно, объект связан с оставленным запросами(запросы находятся в таблице List.php)'".

Пробовал удалить: @ORM\JoinColumn(onDelete="CASCADE") и cascade={"persist"}, orphanRemoval=true, но в таком случае при удаление вылетает 500 ошибка с исключением: ailed to delete object: Download\Entity\Status.

Который час сижу, никак не могу понять, как это сделать по уму :(
  • Вопрос задан
  • 454 просмотра
Решения вопроса 1
glaphire
@glaphire
PHP developer
Можно попробовать иначе - сделать метод удаления на уровне какого-то сервиса, перед удалением проверять наличие связанных сущностей (select /exists), если нашлись - кидать эксепшен с предупреждением. Мне кажется что на уровне стандартной аннотации это просто не получится, нужны доп.меры)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы