2013-03-20 55 views
2

我有太多的類和兩個非TYPO3表。我將非TYPO3表定義爲沒有uid,pid等列的表。非TYPO3表的Extbase映射

我的兩個類:

  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的位置有兩個不同的設施(表格位置有兩行,不同的facility_ids),那麼我希望得到兩個位置模型,並且每個位置模型都有正確的設施模型。

但是相反,我得到了兩個位置模型,它們都具有相同的設施模型。他們已經找到了第一個找到的位置的所有設施。

即使我將設施屬性的類型更改爲整數,也有錯誤的ID。但是,如果我在存儲庫中啓用原始查詢結果,我會得到正確的ID。

當我向兩個表中添加一個uid-column時,我也會得到正確的id或模型。

有沒有可能將沒有uid列的表映射到Extbase模型?

謝謝。

回答

3

好的,我最後一個問題的答案是:是的,沒有可能將沒有uid列的表映射到Extbase模型。

有上僞造一個存在的票據:http://forge.typo3.org/issues/25984

的原因似乎是在mapSingleRow硬編碼$row['uid'](在Tx_Extbase_Persistence_Mapper_DataMapper類)方法。

1

如果它不是很多表必須映射,解決方法可能是爲這些表創建視圖來映射uid。

即:

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