2

私もクラスと 2 つの非 TYPO3 テーブルを持っています。非 TYPO3 テーブルを、uid、pid などの列のないテーブルとして定義しました。

私の2つのクラス:

  1. クラス Tx_Abc_Domain_Model_Location は Tx_Extbase_DomainObject_AbstractEntity を拡張します
  2. クラス Tx_Abc_Domain_Model_Facility は Tx_Extbase_DomainObject_AbstractEntity を拡張します

私の2つのテーブル(列あり):

  1. 場所
    • 郵便番号
    • 施設ID
  2. 設備
    • 施設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 の場所には 2 つの異なる施設があり (テーブルの場所には異なる facility_id を持つ 2 つの行がある)、2 つの場所モデルを取得し、それぞれが適切な施設モデルを取得することを期待します。

しかし、代わりに、すべて同じ施設モデルを内部に持つ 2 つのロケーション モデルを取得します。彼らは最初に見つけた場所のすべての施設を手に入れました。

施設属性のタイプを整数に変更しても、間違った ID があります。しかし、リポジトリで生のクエリ結果を有効にすると、正しい ID が取得されます。

両方のテーブルに uid 列を追加すると、正しい ID またはモデルも取得されます。

Extbase モデルで uid 列のないテーブルをマップする可能性はありませんか?

ありがとう。

4

2 に答える 2

3

さて、私の最後の質問に対する答えは次のとおりです。はい、Extbase モデルで uid 列のないテーブルをマップする可能性はありません。

Forge には既存のチケットがあります: http://forge.typo3.org/issues/25984

その理由は$row['uid']、Tx_Extbase_Persistence_Mapper_DataMapper クラスの mapSingleRow() メソッドにハードコーディングされているようです。

于 2013-03-21T09:22:59.713 に答える
1

マップする必要があるテーブルがそれほど多くない場合、回避策として、それらのテーブルのビューを作成して、uid のみをマップすることができます。

すなわち:

CREATE VIEW tx_abc_domain_model_facility AS
    SELECT facility_id AS uid, facilities.* FROM facilities;
于 2013-07-23T08:08:11.243 に答える