在Typo3中持久保存值对象

问题描述 投票:0回答:1

我有一个Money类扩展AbstractValueObject的属性$amount(int)和$currency(字符串)。我有一个AbstractEntity$price财产持有Money的实例。如何让Typo3持久保存该值对象?如何定义映射?

来自Doctrine,我希望它可以保留在两列price_amountprice_currency中。

typo3 extbase
1个回答
1
投票

Extbase做的事情有点不同 - 所以value objects需要存储在他们自己的表中,并且使用标识符就像实体一样存储对象之间的关系。 实体和VO之间唯一真正的区别是,持久性管理器在查找VO持久性时将使用property values(标识符字段除外),而identifier将用于实体。

  • 因此,您需要将值对象的database schema添加到ext_tables.sql,因为该表应包含自动递增的uid字段以及您的VO所需的字段。确保在amountcurrency列上创建组合唯一索引。
  • 定义TCA映射,然后您可以直接创建存储库或将它们附加到聚合根对象并持久保存这些值对象。

实体上的price属性应该是数据库模式中的整数,因为extbase将存储对VO的uid的引用(如果您只引用实体上的一个Money对象),并且如果您希望存储collection Money对象,Extbase将存储您的实体对象和Money VO之间的关系数。

© www.soinside.com 2019 - 2024. All rights reserved.