getRestrictions()->removeByType 不删除限制

问题描述

我想通过它们的 slug 从数据库中选择页面。对于可见页面,一切正常。但我无法选择隐藏页面。然后我尝试删除 HiddenRestriction 但这也不起作用。

$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('pages'); 
$queryBuilder->getRestrictions()->removeByType(HiddenRestriction::class);
$result = $queryBuilder->select('uid')->from('pages')->where("slug='".$slug."'")->execute();

我只工作

$queryBuilder->getRestrictions()->removeAll();

但是它也会找到已删除页面

试试这个

$queryBuilder->getRestrictions()->removeAll()->add(GeneralUtility::makeInstance(DeletedRestriction::class));

结果

Oops,an error occurred! Class 'MyExt\UF\DeletedRestriction' not found

这两行代码都是直接来自 Typo3 文档,所以我无法弄清楚问题所在。为什么 RemoveByType 不起作用?

解决方法

找到了这两个问题的问题,原因是一样的。文档示例不完整。为了正常工作,您必须添加相应的工作区辅助。

在 removeByType() 的情况下:

use TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction;

并且在 add() 的情况下:

use TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction;

小因,大果……