如何在 TYPO3 8.x extbase 中获取禁用的实体?

How to get disabled entities in TYPO3 8.x extbase?

我已经设置了一个简单的存储库查询设置,以便在 TYPO3 CMS 8.7.22 中获得某些 fe_user。如果不禁用此 fe_user 存储库会返回预期的实体。

但在再次禁用对象后存储库 returns null。那么为什么 setIgnoreEnableFieldssetEnableFieldsToBeIgnored 不再起作用了?

$objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Extbase\Object\ObjectManager');
$defaultQuerySettings = $objectManager->get('TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings');
$defaultQuerySettings->setRespectSysLanguage(FALSE);
$defaultQuerySettings->setRespectStoragePage(TRUE);
$defaultQuerySettings->setIgnoreEnableFields(TRUE);
$defaultQuerySettings->setEnableFieldsToBeIgnored(array('disable'));

$someRepository->setDefaultQuerySettings($defaultQuerySettings);
$response = $someRepository->findByIdentifier($fe_user_id);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($response);

它是默认 frontendUserRepsositoryfindByUid 函数。他们在那里防止隐藏/删除对象。所以我为这种情况构建了自己的存储库函数:

public function findHiddenByUid($uid){
    $query = $this->createQuery();
    $qs = clone($this->defaultQuerySettings);
    $qs->setIgnoreEnableFields(TRUE);
    $qs->setEnableFieldsToBeIgnored(['disable','hidden','disabled']);
    $query->setQuerySettings($qs);
    $query->matching($query->equals('uid', $uid));
    return $query->execute()->getFirst();
}