нужно объяснение на postPersist и данные сброшены - PullRequest
0 голосов
/ 04 января 2019

У меня были проблемы с сущностью, которая не была правильно очищена.

В сервисе я установил значения сом. прежде чем сбросить их в службу, я звоню в другую службу и вижу, что подключен слушатель. В этом слушателе был метод postPersist в ведьме, который назывался "$ entityManager-> flush ();"

Это было источником моей проблемы.

Я нашел это сообщение: Вставка доктрины в событие postPersist

Итак, я удалил флеш, который был сделан в postPersist.

Но я не понимаю необходимости метода postFlush.

В моем случае данные сбрасываются, даже если у меня нет этого метода. как это возможно, что свойства, установленные в слушателе, корректно сбрасываются без этого события?

Если я смотрю другие точки входа, я вижу, что мне нужно объявить событие postFlush, и я вижу необходимость в этом методе.

спасибо за вашу помощь

1 Ответ

0 голосов
/ 04 января 2019

Нет, вам не нужно сбрасывать в событии postPersist, потому что это будет сделано в ближайшее время, сразу после Persist. Вам не нужно использовать все функции списка, а также не объявлять их.

пс .: Только если вам нужно получить / установить данные перед сохранением / сбросом. Вам нужно будет вычислить изменения, а затем включить их в действие «пара» (например, prePersist и postPersist, preUpdate и postUpdate). Документы говорят:

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

и

getEntityChangeSet (), чтобы получить копию массива изменений. Изменения в этот возвращенный массив не влияет на обновление.

PostFlush

PostFlush производится в конце операции очистки. Согласно документации это событие не является обратным вызовом жизненного цикла. Вы можете использовать его для настройки чего-либо после регистрации или даже для отправки уведомлений, очевидно, что с postFlush вам не нужно беспокоиться о событиях lifeCycle.

postFlush - событие postFlush наступает в конце сброса операция. Это событие не является обратным вызовом жизненного цикла.

Для постперсиста в документах

postPersist - Событие postPersist наступает для объекта после сущность была сделана настойчивой. Он будет вызван после базы данных операции вставки. Сгенерированные значения первичного ключа доступны в Событие postPersist.

Здесь вы можете иметь идентификаторы, если вам нужно до сброса.

Вы можете проверить документы о LifeCycleEvents здесь: https://www.doctrine -project.org / проекты / Доктрина-ОРМ / ен / последний / ссылка / events.html # Жизненный цикл-события

...