【问题标题】:Extbase Mapping with non-TYPO3-table与非 TYPO3 表的 Extbase 映射
【发布时间】:2013-03-20 17:58:09
【问题描述】:

我也有课程和两个非 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. 位置
    • 邮政编码
    • 城市
    • facility_id
  2. 设施
    • facility_id
    • 姓名

我已经像这样映射了属性:

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),那么我希望得到两个位置模型,并且每个位置模型都有正确的设施模型。

但是我得到了两个位置模型,它们内部都有相同的设施模型。他们拥有第一个发现地点的所有设施。

即使我将设施属性的类型更改为整数,也会有错误的 ID。但是,如果我在存储库中启用原始查询结果,我会得到正确的 ID。

当我向两个表中添加一个 uid 列时,我也得到了正确的 id 或模型。

是否无法将没有 uid 列的表与 Extbase 模型进行映射?

谢谢。

【问题讨论】:

    标签: model-view-controller typo3 extbase


    【解决方案1】:

    好的,我最后一个问题的答案是:是的,不可能将没有 uid 列的表与 Extbase 模型映射。

    forge 上有一张现有票证:http://forge.typo3.org/issues/25984

    原因似乎是 Tx_Extbase_Persistence_Mapper_DataMapper 类的 mapSingleRow() 方法中硬编码的$row['uid']

    【讨论】:

      【解决方案2】:

      如果您必须映射的表不是很多,解决方法可能是为这些表创建视图以仅映射 uid。

      即:

      CREATE VIEW tx_abc_domain_model_facility AS
          SELECT facility_id AS uid, facilities.* FROM facilities;
      

      【讨论】:

        猜你喜欢
        • 2013-08-26
        • 2013-07-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多