Сохранение вновь созданного объекта со значениями по умолчанию из файла конфигурации, которые являются неизменными для последующего сохранения - PullRequest
0 голосов
/ 06 июля 2018

У меня есть требование, используя Doctrine для сохранения сущности с предустановленными значениями, которые заполняются из конфигурации приложения.

Существует несколько приложений, совместно использующих одну и ту же кодовую базу, с разными конфигурациями.

Моя первоначальная идея состояла в том, чтобы использовать предварительно сохраненный прослушиватель, загрузить значения конфигурации и все готово, но проблема в том, что этиатрибуты НЕ должны изменяться после создания сущности, даже если файл конфигурации изменяет исходную конфигурацию сущности, которая должна оставаться такой, какой она была изначально.Даже если объект загружается в форму и восстанавливается с другими измененными значениями, эти конкретные начальные настройки приложения следует устанавливать только при создании объекта и сохранять в течение всего жизненного цикла объекта, как они были в начале.

IЯ понимаю, что можно установить значения для сущности с помощью установщиков сущности, но, поскольку эти сущности создаются в разных местах приложения, я думал, что использование пре-персистентного хука уменьшит дублирование кода.

Есть ли способ определить, был ли объект недавно создан, или другой слушатель, которого я мог бы использовать?Я пролистал документацию и не увидел слушателей, специфичных для создания объекта.

Я подумал, что, возможно, при первом pre-persist, некоторые атрибуты сущности, такие как "create", возможно, не устанавливаются при первом вызове pre-persist, когдаобъект создается и сохраняется в первый раз.

Есть ли способ достичь того, что я пытаюсь сделать, каким-то образом установить значения при создании сущности, которые являются неизменяемыми при последующих персистентах?

1 Ответ

0 голосов
/ 06 июля 2018

Вы на правильном пути. Конечно, вы можете использовать событие prePersist, как указано в документе

https://www.doctrine -project.org / проекты / Доктрина-ОРМ / о / 2,6 / ссылки / events.html # Жизненного цикл-событие

prePersist - событие prePersist происходит для данного объекта до соответствующая операция сохранения EntityManager для этого объекта казнены. Следует отметить, что это событие происходит только на первоначальное сохранение сущности (т.е. оно не сработает в будущем обновления).

Я бы также добавил к сущности ограничение, что сохранение вашей сущности с пустым значением для желаемых полей невозможно. Таким образом, гарантируется отсутствие противоречий.

...