Как изменить значение поля в прослушивателе событий preUpdate?

Документация гласит:

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

Но он также говорит:

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

Означает ли это, что я не могу изменять поля объекта в preUpdate eventener? Если нет, то как я могу сделать это обновление?

Ответы

Ответ 1

По-видимому, вам нужно самому перекомпетентно изменить набор изменений, чтобы изменения вступили в силу:

$em = $args->getEntityManager();
$uow = $em->getUnitOfWork();
$meta = $em->getClassMetadata(get_class($entity));
$uow->recomputeSingleEntityChangeSet($meta, $entity);