Chr*_*ret 1 typo3 extbase typo3-extensions typo3-9.x
我有一个关于 TYPO3 9.5 中 enablecolumns 和 QueryBuilder 的问题:
在 TCA 中,我定义了 enablecolumns:
'ctrl' => [
'title' => '....'
'tstamp' => 'tstamp',
'crdate' => 'crdate',
'versioningWS' => 2,
'versioning_followPages' => true,
'origUid' => 't3_origuid',
'languageField' => 'sys_language_uid',
'transOrigPointerField' => 'l18n_parent',
'transOrigDiffSourceField' => 'l18n_diffsource',
'delete' => 'deleted',
'enablecolumns' => [
'disabled' => 'hidden',
'fe_group' => 'fe_group',
],
]
Run Code Online (Sandbox Code Playgroud)
在存储库中,我创建了一个自定义查询:
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('tx_myext_domain_model_table');
$result = $queryBuilder
->select('*')
->from('tx_myext_domain_model_table')
->where($where)
->execute();
Run Code Online (Sandbox Code Playgroud)
如果我调试 SQL
$queryBuilder->getSQL();
Run Code Online (Sandbox Code Playgroud)
我看到已删除和隐藏的条件,但没有 fe_group
如果我添加
$queryBuilder
->getRestrictions()
->removeAll()
->add(GeneralUtility::makeInstance(FrontendGroupRestriction::class))
->add(GeneralUtility::makeInstance(DeletedRestriction::class))
->add(GeneralUtility::makeInstance(HiddenRestriction::class));
Run Code Online (Sandbox Code Playgroud)
在执行查询之前,添加了 fe_groups 条件。
我错过了什么?
谢谢基督徒
小智 5
这是因为QueryBuilder默认情况下使用DefaultRestrictionContainer仅添加以下限制:
protected $defaultRestrictionTypes = [
DeletedRestriction::class,
HiddenRestriction::class,
StartTimeRestriction::class,
EndTimeRestriction::class
];
Run Code Online (Sandbox Code Playgroud)
参考:
您可能正在寻找的是FrontendRestrictionContainer使用以下默认限制的 :
protected $defaultRestrictionTypes = [
DeletedRestriction::class,
FrontendWorkspaceRestriction::class,
HiddenRestriction::class,
StartTimeRestriction::class,
EndTimeRestriction::class,
FrontendGroupRestriction::class,
];
Run Code Online (Sandbox Code Playgroud)
一种可能的解决方案是使用此容器而不是默认容器:
$container = GeneralUtility::makeInstance(FrontendRestrictionContainer::class);
$queryBuilder->setRestrictions($container);
Run Code Online (Sandbox Code Playgroud)