jakulov
@jakulov

Doctrine: как получить исходное состояние поля ManyToMany Collection?

Делаю логгирование изменений объектов с использованием Doctrine.
Для простых полей все просто, использую UnitOfWork::getEntityChangeSet
А вот если поле содержит коллекцию объектов, то не могу найти возможности сравнить исходное значение поля с состоянием во время postUpdate.
Нашел методы UnitOfWork::getScheduledCollectionDeletions и UnitOfWork::getScheduledCollectionUpdates
Но через них могу получить только непосредственные изменения, которые будут записаны в БД, диффа там нет, как в changeSet.

Подскажите куда копать, есть что-то готовое для таких случаев в Doctrine ORM? Как сделать решение самому – простого способа не нашел, только извращения на ум лезут...

Спасибо.
  • Вопрос задан
  • 421 просмотр
Пригласить эксперта
Ответы на вопрос 2
slimus
@slimus
Symfony, Golang
У себя в проекте используем https://packagist.org/packages/simplethings/entity...
Настроили какие entity нужно мониторить, бандл сам все сохраняем, мы потом только историю смотрим
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
А вот если поле содержит коллекцию объектов, то не могу найти возможности сравнить исходное значение поля с состоянием во время postUpdate.

Сами объекты в коллекции продолжайте сравнивать через getEntityChangeSet, а изменение коллекций обрабатываются отдельно.

В целом трекинг изменений через доктрину это так себе идея, есть более удобные подходы вроде CQRS + Event Sourcing.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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