2017-06-21 75 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