Как войти в сущность, у которой есть коллекции?

Я хочу регистрировать все изменения объекта. Я изучил расширение доктрины 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, которое поддерживает этот тип отношений.

Другие вопросы по тегам