使用TYPO3存储库查询获取禁用/隐藏关系表记录

时间:2019-05-10 05:57:09

标签: typo3 extbase typo3-8.7.x

在我的自定义扩展中,我有一个记录要求,可以说哪些是保存在表名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连接池查询代替存储库查询。

1 个答案:

答案 0 :(得分:1)

为什么不是$ query-> getQuerySettings()-> setIgnoreEnableFields(true);给你一个选择?您可以像使用连接池那样完全按照所需的方式构建查询。