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

时间:2014-07-23 11:02:18

标签: symfony doctrine-orm symfony-2.4 doctrine-extensions stofdoctrineextensions

我想记录实体的所有更改。我查看了StofDoctrineExtensionsBundle提供的Loggable学说扩展。

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

我收到此错误:

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

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

1 个答案:

答案 0 :(得分:4)

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

另一种选择是摆脱ManyToMany关系。为此,创建一个与AssetTagOneToMany Asset关系Tag的中间实体artists = DB[:artists] artists.update(:column_name => 'new value') 。完成此操作后,您可以使用EntityAudit Doctrine Extension,它支持此类关系。