2013-07-29 6 views
5

ドメインモデルMessageで拡張を作成しました。このモデルは、TYPO3 pages(タイトル、issite_rootなどのページの詳細を持つもの)テーブルとの関係がm:nです。しかし、mapping to existing tablesオプションを使用して、そのページを言ってくれtypeエラーを与える:TYPO3 6.1のExtbaseからの "pages"テーブルへのマッピング

The configured type field for table "pages" is of type int(11) unsigned 
This means the type field can not be used for defining the record type. 
You have to configure the mappings yourself if you want to map to this 
table or extend the correlated class 

私は後でsetup.txtからそれをマッピングすることができるようにだから私はちょうど、マッピングせずに関係を作成します。

enter image description here

MyExt/Classes/Domain/Repository/内のすべてのゲッター/セッターとリポジトリとMyExt/Classes/Domain/Model/にモデルPagesを作成しましたI。私のSETUP.TXTで

は、私はこれでした:

config.tx_extbase { 
    persistence{ 
        enableAutomaticCacheClearing = 1 
        updateReferenceIndex = 0 
        classes { 
        Tx_Playfield_Domain_Model_Pages { 
            mapping { 
                    tableName = pages 
                columns { 
                                uid.mapOnProperty               = uid 
                                pid.mapOnProperty               = pid 
                                sorting.mapOnProperty           = sorting 
                                title.mapOnProperty             = title 
                                subtitle.mapOnProperty          = subtitle 
                            } 
                } 
            } 
      } 
    } 
} 

をしかし、私は存在しませんtx_playfield_domain_model_pagesために私が作成したページのモデル、

var_dump($this->pagesRepository->findByUid(74));

その検索にアクセスしようとすると、それは示します

Table 'typo3.tx_playfield_domain_model_pages' doesn't exist: SELECT tx_playfield_domain_model_pages.* FROM tx_playfield_domain_model_pages WHERE tx_playfield_domain_model_pages.uid = '74' LIMIT 1 

私は何ですか?ここで歌う?次の後

更新

http://t3-developer.com/extbase-fluid/cheats-extbase/model/tabelle-pages-in-extbase/ @Michael私が提案するがempty result$this->pagesRepository->findByUid(74)から

setup.txtがロードされ得ます。私はそれを確認するためにこれを行いました:

plugin.tx_playfield{ 
settings{ 
temp=yes 
} 
} 

これは私のコントローラからアクセスされています。

+0

setup.txtがよろしいですか。あなたのモデルはMyExt/Classes/Domain/Model/Pages.phpでどのように定義されていますか? setup.txtが実行時に実際にロードされていることを確認しましたか(TSオブジェクトブラウザhttp://stackoverflow.com/a/6671818/283854) 'config.tx_extbase'の代わりに' config.tx_playfield'を使って同じものを設定しようとしましたか? – Mateng

+0

はい。私は更新されました、それはsetup.txtがロードされているようですが、extbaseはマップされていないことがわかります。 私も 'config.tx_playfield'を試しましたが動作しません! – dora

+1

Btw:デバッギングの目的で、 '\ TYPO3 \ CMS \ Extbase \ Utility \ DebuggerUtility :: var_dump($ var、 'Name');を使うのが良いです。それには多くの利点があります。 – Mateng

答えて

4

ページドメインモデル(拡張ビルダー内にあるかどうか)を作成していない可能性がありますか?ファイルmy_ext/Classes/Domain/Model/Pages.phpが存在する必要があります。

enter image description here

私はあなたのエラーがどこにあるかを正確に知りませんが、:あなたの「ページ」ドメインモデルは、既存のテーブルセットのページにプロパティ地図を持っていることを確認し、それはそれのようになります。私は拡張ビルダーでいくつかの修正を行い、それを動作させました。私の一時的な内線番号playfieldと私の一時的な内線番号testfieldDownload it here (updated)を比較すると分かります。


Btwでは、フロントエンドに表示したくないプロパティを、別の名前を付けない限りマップする必要はありません。

 mapping { 
      tableName = pages 
      columns { 
       title.mapOnProperty = title 
       subtitle.mapOnProperty = subtitle 
      } 
     } 
+0

はい。私は最初、拡張ビルダーから 'Pages'を追加しましたが、それは奇妙なエラーを表示していたので、自分で作成しました。しかし、あなたの拡張機能 'testfield'は私の望むものです。ありがとうございます:) – dora

+0

ようこそ。あなたは最初のエラーを見つけることができましたか? – Mateng

+0

最初にExtension Builderからマップしませんでした。これはエラーです。しかし、今、私はこれを使って、http://stackoverflow.com/questions/17962619/map-to-existing-tables-in-extension-builder-showing-weird-issues-in-typo3を参考にして作業 – dora

1

キャメラケースの文字(クラス名)でマッピングを記述する必要があると思います。 this postはドイツ語ですが、コードが役立つかもしれないと思います。著者はクラスに使用するフィールドをいくつか追加し、拡張機能のtyposcriptにもマッピングを追加しました(サンプルコードを参照)。ドイツ語のテキストの最も重要な部分は、この例はdbからの読み取りのみを目的としていたということです。モデルを使用して新しいページを作成する場合は、TCAとセッターをモデルクラスに追加して機能させる必要があります(少なくとも)。

+0

ありがとうございます。それは私がやったこととほとんど同じでした。今すぐ '$ this-> pageRepository-> findAll() - > toArray()'を実行すると空の結果が表示されます – dora

+0

Extbaseがマッピングを認識していないと思われ、NULLを返します。 – dora

関連する問題