Typo3 TCA中的类型3 Extbase m:m关系

Typo3 TCA中的类型3 Extbase m:m关系,typo3,extbase,Typo3,Extbase,我目前正在一个简单的自定义TYPO3扩展中处理m:m关系 有多个过滤器,一个过滤器可以涉及十几个类别。该关系包括在筛选器中选择的类别: 现在,大约有150个过滤器,所有类别在分配给产品时都会显示所有过滤器,但应该只显示与该类别关联的过滤器 我找不到关于此的任何文档,我当前的TCA设置如下所示: 'filter_bauwerkszustand' => array( 'exclude' => 0, 'label' => 'Bauwerkszust

我目前正在一个简单的自定义TYPO3扩展中处理m:m关系

有多个过滤器,一个过滤器可以涉及十几个类别。该关系包括在筛选器中选择的类别:

现在,大约有150个过滤器,所有类别在分配给产品时都会显示所有过滤器,但应该只显示与该类别关联的过滤器

我找不到关于此的任何文档,我当前的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,
        ),
    ),

如果是MM关系,那就是问题所在:过滤器中的关系列并不实际包含类别,只包含关系的计数。实际关系反映在MM表格中。后端将类别合并到带有
JOIN
s的
SELECT
语句中,首先是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\u produkte\u domain\u model\u filter.filterkategorie=1
部分与
tx\u produkte\u filterkategorie\u mm.uid\u foreign=1
关联,我有点困惑。您的问题到底是什么?@KamiYang如何正确编辑TCA以仅显示类别的正确筛选器。它当前显示了后端中要选择的所有筛选器。将这些筛选器保留在同一个表中的原因是什么?如果您处理的是单独的实体,那么它们应该分为三个表:bauwerkszustand、Egenschaften和ziel,而不是将它们全部放在filterkategorie中。无论如何,您需要以某种方式反映表行中的差异,然后扩展“foreign_table_where”-子句以匹配该差异。@j4k3“您需要以某种方式反映表行中的差异…”这正是我面临的问题——如何在TCA中做到这一点?我刚才注意到您已经厌倦了在foreign_table_where子句中定义filterkategorie。我从你的片段中收集的信息有点混乱。filter和filtercategory之间的关系类型是1:n还是n:m?不幸的是,这会引发错误:“where子句”中的未知列“tx_produkte_filter_filterkategorie_mm.uid_foreign”。这是一个很好的例子。这是一种新的模式。您正在安装工具,以便在Datenbank Vergleich durchzuführen安装。“该死,真不幸。我确信MM表将被加入到查询中。我想这是一条死胡同,因为我不知道如何调试从TCA配置构建的查询。好。您仍然可以选择编写用户函数来收集Selectbox选项,如本文所述,并定义自己的查询: