我的自定义扩展中有一个要求,其中有记录,假设哪些是保存在表名中的项目:tx_myextension_domain_model_projects
,哪些是使用自定义类别表分类的,tx_myextension_domain_model_categories
模型中映射的关系是m:n并保存在mm表中tx_myextension_category_record_mm
。
这是类别字段的 TCA 映射:
products_category' => [
'exclude' => true,
'label' => 'Category Label',
'config' => [
'type' => 'select',
'renderType' => 'selectTree',
'foreign_table' => 'tx_myextension_domain_model_categories',
'foreign_table_where' => 'ORDER BY tx_myextension_domain_model_categories.sorting',
'MM' => 'tx_myextension_category_record_mm',
'MM_match_fields' => [
'tablenames' => 'tx_myextension_domain_model_projects',
],
'MM_opposite_field' => 'items',
'size' => 20,
'treeConfig' => [
'parentField' => 'parent',
'appearance' => [
'showHeader' => true,
'expandAll' => true,
'maxLevels' => 99,
],
],
],
],
因此,在我的一个用例中,我需要获取被归类为禁用和活动类别的项目。
例如,这是类别:
categories = [
A => [
A1 => [
A1.2
]
A2 => [
A2.2
]
],
B => [
B1 => [
B1.2
]
],
];
假设A1
被禁用/隐藏记录,我想获取分配给A1
及其子A1.2
的项目。是否有可能使用 TYPO3 存储库查询获取项目记录。
注意:我无法使用$querySettings->setIgnoreEnableFields(true);
禁用启用字段,因为我不想为类别的整个存储库禁用它,并且还需要在查询项目记录时从项目存储库禁用它。我希望我的问题很清楚。请让我知道解决方案。
目前我选择的解决方案:我使用了 TYPO3 连接池查询而不是存储库查询。
为什么不是 $query->getQuerySettings()->setIgnoreEnableFields(true); 一个选项?您可以完全按照所需的方式构建查询,就像使用连接池一样。