2017-06-21 37 views
0

我目前在一個簡單的自定義TYPO3擴展中掙扎着m:m關係。TYPO3在TCA內的m:m關係

有多個過濾器和過濾器可以關聯的大約十幾個類別。的關係由類的過濾器中進行選擇:

Filter-Category-Relation

現在,大約有150種濾鏡,並將它們分配給一個產品,當而是應該只顯示那些過濾所有類別顯示全部過濾器與該類別相關聯 y。

Filters

我找不到任何關於此的任何文件,我目前的TCA設置是這樣的:

'filter_bauwerkszustand' => array(
     'exclude' => 0, 
     'label' => 'Bauwerkszustand', 
     'config' => array(
      'type' => 'select', 
      'renderType' => 'selectMultipleSideBySide', 
      'foreign_table' => 'tx_produkte_domain_model_filter', 
      'foreign_table_where' => ' AND tx_produkte_domain_model_filter.filterkategorie = 1 AND tx_produkte_domain_model_filter.sys_language_uid=###REC_FIELD_sys_language_uid### ORDER BY tx_produkte_domain_model_filter.titel ASC', 
      'MM' => 'tx_produkte_filter_filterkategorie_mm', 
      'size' => 10, 
      'autoSizeMax' => 10, 
      'maxitems' => 9999, 
      'multiple' => 0, 
     ), 
    ), 
+0

我有點困惑。你的問題到底是什麼? –

+0

@KamiYang如何正確編輯TCA以僅顯示某個類別的正確過濾器。它目前顯示後端的所有過濾器以供選擇。 – Andreas

+0

將這些全部保存在同一張表中的原因是什麼?如果你處理的是單獨的實體,它們應該被分成三個表,bauwerkszustand,eigenschaften和ziel,而不是讓它們全部放在過濾器分類中。無論如何,您需要以某種方式反映表格行中的差異,然後擴展「foreign_table_where」條款以與之匹配。 – j4k3

回答

0

如果它是一個MM-關係多數民衆贊成的問題:在過濾犯規關係科拉姆實際上可以持有類別,只是關係的數量。實際關係反映在MM表中。後端集成在SELECT聲明的類別與JOIN S,第一個到MM-表,並從那裏到實際的類別,例如:

tx_produkte_domain_model_filter.uid = 
tx_produkte_filter_filterkategorie_mm.uid_local 

tx_produkte_filter_filterkategorie_mm.uid_foreign = 
tx_produkte_domain_model_filterkategorie.uid 

嘗試用tx_produkte_filter_filterkategorie_mm.uid_foreign = 1 relacing在查詢中tx_produkte_domain_model_filter.filterkategorie = 1部分。

+0

不幸的是,這會引發一個錯誤:「where子句中的未知列'tx_produkte_filter_filterkategorie_mm.uid_foreign'。在SQL-Fehler aufgetreten中。模塊名稱和Schema-Abweichung zwischen TCA und der Datenbank hindeuten。Versuchen Sie im Install Tool einen Datenbank-Vergleichdurchzuführen。「 – Andreas

+0

該死的,那是不幸的。我確信MM表將被加入查詢中。那是一個死路,我想,因爲我知道無法調試從TCA配置構建的查詢。好。如本博客所述,您仍然可以選擇編寫用戶函數來收集選擇框選項,並定義您自己的查詢: http://blog.systemfehler.net/typo3-tca-feld-mit-userfunc- benutzen / – j4k3