Как войти в сущность, у которой есть коллекции?
Я хочу регистрировать все изменения объекта. Я изучил расширение доктрины Loggable, предоставленное StofDoctrineExtensionsBundle.
Я получил это работает для полей, которые хранят простые данные, например, строки и целые числа. Но моя сущность также имеет отношение ManyToMany к другой сущности, например Tags
,
Я получаю эту ошибку:
InvalidMappingException: Cannot versioned [tags] as it is collection in object - Hn\AssetDbBundle\Entity\Asset
Есть ли способ зарегистрировать сущность с ее отношениями? Я не против перейти на другую связку.
1 ответ
В настоящее время ни один пакет / расширение не имеет такой функциональности из коробки. Одним из вариантов было бы реализовать это самостоятельно. Это можно сделать, используя слушателей доктрины. Особенно вам нужно слушать postUpdate
а также postPersist
события - это происходит, когда сущность обновляется и создается и хранит там ваши теги.
Другой вариант - избавиться от ManyToMany
отношения. Для этого создайте промежуточную сущность AssetTag
что бы иметь OneToMany
отношение к обоим Asset
а также Tag
, После этого вы можете использовать EntityAudit Doctrine Extension, которое поддерживает этот тип отношений.