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.

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

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

Похожие вопросы