如何记录具有集合的实体?

k0p*_*kus 6 symfony doctrine-orm doctrine-extensions stofdoctrineextensions symfony-2.4

我想记录实体的所有更改.我查看了由StofDoctrineExtensionsBundle提供的Loggable教义扩展.

我让它适用于存储简单数据的字段,例如字符串和整数.但我的实体也与另一个实体有许多关系,例如Tags.

我收到此错误:

InvalidMappingException: Cannot versioned [tags] as it is collection in object - Hn\AssetDbBundle\Entity\Asset
Run Code Online (Sandbox Code Playgroud)

有没有办法记录实体与其关系?我不介意切换到另一个捆绑.

Kon*_*lov 7

目前没有捆绑包/扩展程序具有开箱即用的功能。一种选择是自己实现它。这可以通过使用Doctrine Listeners来完成。特别是您需要侦听postUpdatepostPersist事件 - 这些发生在更新和创建实体并将您的标签存储在那里时。

另一种选择是摆脱ManyToMany关系。为此,创建一个与 和AssetTag都有OneToMany关系的中间实体。完成此操作后,您可以使用支持此类关系的EntityAudit Doctrine Extension。AssetTag