Держите две разные версии сущности в Doctrine ORM - PullRequest
0 голосов
/ 09 октября 2018

Я работаю над проектом Symfony4 / Doctrine / MySQL со следующим требованием:

  • Пользователи могут создавать объекты (например, сообщения), которые будут видны в общедоступном интерфейсе только после утвержденияадминистратором

  • Когда пользователь редактирует свой пост после утверждения / публикации, измененный пост должен быть снова утвержден, прежде чем изменения станут видны во внешнем интерфейсе.Но пока ожидается утверждение, старая утвержденная версия сообщения должна оставаться видимой в веб-интерфейсе.

Это означает, что мне нужно сохранить две версии каждой сущности "Post": утвержденная версия длявеб-интерфейс и незавершенная версия для бэкэнда.

В прошлых проектах с аналогичными требованиями я пробовал разные подходы к этой проблеме:

  1. Использование "Поведение с поддержкой версий"msgstr "(это было в дни Symfony1 / Propel с использованием sfPropelVersionableBehaviorPlugin).Для отображения во внешнем интерфейсе, если объект не был утвержден, мне приходилось извлекать предыдущие версии, пока не была найдена последняя утвержденная версия.

  2. Используя вторую таблицу объекта / базы данных "ApprovedPost" сто же определение поля, что и у основного объекта "Post".Когда сообщение одобрено администратором, оно будет скопировано в таблицу ApprovedPost.Интерфейс работает только с таблицей ApprovedPost.

Какова наилучшая практика для реализации такого поведения?

...