【问题标题】:How to log an entity that has collections?如何记录具有集合的实体?
【发布时间】:2014-07-23 11:02:18
【问题描述】:

我想记录一个实体的所有变化。我查看了 StofDoctrineExtensionsBundle 提供的Loggable 学说扩展。

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

我收到此错误:

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

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

【问题讨论】:

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


【解决方案1】:

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

另一种选择是摆脱ManyToMany 关系。为此,创建一个中间实体AssetTag,它与AssetTag 都有OneToMany 关系。完成后,你可以使用EntityAuditDoctrine Extension,它支持这种类型的关系。

【讨论】:

  • 请注意,Loggable 也可以检测到中间实体的创建。
猜你喜欢
  • 2015-03-18
  • 2021-12-18
  • 2021-06-02
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
相关资源
最近更新 更多