我有一个Money
类扩展AbstractValueObject
的属性$amount
(int)和$currency
(字符串)。我有一个AbstractEntity
与$price
财产持有Money
的实例。如何让Typo3持久保存该值对象?如何定义映射?
来自Doctrine,我希望它可以保留在两列price_amount
和price_currency
中。
Extbase做的事情有点不同 - 所以value objects需要存储在他们自己的表中,并且使用标识符就像实体一样存储对象之间的关系。
实体和VO之间唯一真正的区别是,持久性管理器在查找VO持久性时将使用property values
(标识符字段除外),而identifier
将用于实体。
ext_tables.sql
,因为该表应包含自动递增的uid
字段以及您的VO所需的字段。确保在amount
和currency
列上创建组合唯一索引。实体上的price
属性应该是数据库模式中的整数,因为extbase将存储对VO的uid的引用(如果您只引用实体上的一个Money对象),并且如果您希望存储collection Money对象,Extbase将存储您的实体对象和Money VO之间的关系数。