Установить атрибут сущности доктрины в каскаде (приложение Symfony2)

0

Я работаю в приложении Symfony2 (используя Doctrine), где он содержит следующие объекты:

  • A (имя, описание, isDeleted, b)
  • B (имя, описание, isDeleted, c)
  • C (имя, описание, isDeleted)

    A-> B-> C

Одним из требований Приложения является то, что мы должны хранить в базе данных все строки и просто устанавливать их как удаленные, если нам нужно удалить A, B или C из базы данных.

В настоящее время каждый объект имеет службу менеджера, которая позволяет нам управлять и работать с объектами.

Однако, когда нам нужно удалить один элемент сущностей A (isDeleted = true), мы должны вызвать действие для установки как isDeleted = true всех дочерних отношений, в этом конкретном случае нам нужно установить как удаленные B и C.

Есть ли какой-либо шаблон дизайна или хорошая практика (с помощью диспетчера событий, события жизненного цикла доктрины или служебного пути) для достижения этого? Чтобы сохранить код в чистоте и обслуживании, если нам нужно добавить больше отношений.

Благодарю.

  • 0
    Жизненные циклы Doctrine не будут запущены, если вы используете собственный запрос. Я бы рекомендовал использовать диспетчер событий. Когда вы удаляете сущности, вы должны инициировать событие, а в связанных слушателях вы должны обновить подходящие другие сущности.
Теги:
doctrine2

1 ответ

1

Я думаю, что Soft Delete Extension достаточно хорош для этого

https://github.com/Atlantic18/DoctrineExtensions/blob/master/doc/softdeleteable.md

http://doctrine-mongodb-odm.readthedocs.org/en/latest/cookbook/soft-delete-extension.html

Ещё вопросы

Сообщество Overcoder
Наверх
Меню