带有非typo3表的Extbase映射



我有两个类和两个非typo3表。我将非typo3表定义为没有uid、pid等列的表。

我的两个类

  1. 类Tx_Abc_Domain_Model_Location扩展Tx_Extbase_DomainObject_AbstractEntity
  2. 类Tx_Abc_Domain_Model_Facility扩展Tx_Extbase_DomainObject_AbstractEntity

我的两个表(带列):

  1. 位置
    • zipcode
    • 城市
    • facility_id
  2. 设施
    • 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;

最新更新