6

Ich möchte alle Änderungen einer Entität protokollieren. Ich schaute in Loggable Doktrin-Erweiterung wie von der StofDoctrineExtensionsBundle zur Verfügung gestellt.Wie protokolliert man eine Entität mit Sammlungen?

Ich habe es funktioniert für Felder, die einfache Daten, z. String und ganze Zahlen. Aber meine Entität hat auch eine ManyToMany-Beziehung zu einer anderen Entität, z. Tags.

Ich erhalte diese Fehlermeldung:

InvalidMappingException: Cannot versioned [tags] as it is collection in object - Hn\AssetDbBundle\Entity\Asset 

Gibt es eine Möglichkeit, eine Einheit mit seinen Beziehungen zu protokollieren? Es macht mir nichts aus, zu einem anderen Bündel zu wechseln.

+0

Hier ist ein [verwandtes Thema auf GitHub] (https://github.com/Atlantic18/DoctrineExtensions/issues/1160). –

Antwort

4

Momentan haben keine Bundles/Erweiterungen diese Funktionalität im Lieferumfang. Eine Möglichkeit wäre, es selbst zu implementieren. Dies kann unter Verwendung von Doctrine Listeners erfolgen. Insbesondere müssen Sie die Ereignisse postUpdate und postPersist abhören - dies geschieht, wenn die Entität aktualisiert und erstellt wird und Ihre Tags dort gespeichert werden.

Eine andere Option ist ManyToMany Beziehung loszuwerden. Erstellen Sie dazu eine intermediäre Entität AssetTag, die OneToMany Beziehung zu Asset und Tag haben würde. Danach können Sie die Doktrinenerweiterung EntityAudit verwenden, die diese Art von Beziehungen unterstützt.

+0

Beachten Sie, dass Loggable auch die Erstellung der intermediären Entität erkennen kann. –