我有两个类和两个非typo3表。我将非typo3表定义为没有uid、pid等列的表。
我的两个类
- 类Tx_Abc_Domain_Model_Location扩展Tx_Extbase_DomainObject_AbstractEntity
- 类Tx_Abc_Domain_Model_Facility扩展Tx_Extbase_DomainObject_AbstractEntity
我的两个表(带列):
- 位置
- zipcode 城市
- facility_id
- 设施
- facility_id <
- 名称/gh>
我已经像这样映射了属性:
config.tx_extbase.persistence.classes {
Tx_Abc_Domain_Model_Location.mapping {
tableName = locations
columns {
zipcode.mapOnProperty = zipcode
city.mapOnProperty = city
facility_id.mapOnProperty = facility
}
}
Tx_Abc_Domain_Model_Facility.mapping {
tableName = facilities
columns {
facility_id.mapOnProperty = uid
name.mapOnProperty = name
}
}
}
我的问题:
我的位置模型的设施属性得到了类型Tx_Abc_Domain_Model_Facility
,当我通过LocationRepository寻找位置时,它为我构建了一个包含设施模型的位置模型。
问题出现了,当我正在做的搜索返回几个结果。例如,邮政编码为12345的位置有两个不同的设施(并且表位置有两个具有不同设施id的行),那么我期望得到两个位置模型,每个位置模型都得到正确的设施模型。
但是我得到了两个位置模型,它们里面都有相同的设施模型。他们有第一个找到的地方的所有设施。
即使我将facility属性的类型更改为整数,也会有错误的id。但是如果我在存储库中启用原始查询结果,我就会得到正确的id。
我也得到正确的id或模型,当我添加一个id-column到两个表。
有没有可能映射表没有uid列与Extbase模型?
谢谢。
好的,我最后一个问题的答案是:是的,没有可能映射没有uid列的表与Extbase模型。
在forge: http://forge.typo3.org/issues/25984有一个现有的票证
原因似乎是Tx_Extbase_Persistence_Mapper_DataMapper类的mapSingleRow()方法中的硬编码$row['uid']
。
如果需要映射的表不是很多,那么可以为这些表创建视图来映射uid。
即:
CREATE VIEW tx_abc_domain_model_facility AS
SELECT facility_id AS uid, facilities.* FROM facilities;