Db::ignoreEnableFields() 

\nn\t3::Db()->ignoreEnableFields($queryOrRepository, $ignoreStoragePid = true, $ignoreHidden = false, $ignoreDeleted = false, $ignoreStartEnd = false); 

Removes default constraints for StoragePID, hidden and/or deleted for a query or repository.

\nn\t3::Db()->ignoreEnableFields( $entryRepository );
\nn\t3::Db()->ignoreEnableFields( $query );
Copied!

Example for a custom query:

$table = 'tx_myext_domain_model_entry';
$queryBuilder = \nn\t3::Db()->getQueryBuilder( $table );
$queryBuilder->select('uid','title','hidden')->from( $table );
\nn\t3::Db()->ignoreEnableFields( $queryBuilder, true, true );
$rows = $queryBuilder->executeQuery()->fetchAllAssociative();
Copied!

If this is not enough or too complicated, see:

\nn\t3::Db()->statement();
Copied!
@param mixed $queryOrRepository
@param boolean $ignoreStoragePid
@param boolean $ignoreHidden
@param boolean $ignoreDeleted
@param boolean $ignoreStartEnd
@return mixed

Source Code 

public function ignoreEnableFields ( $queryOrRepository, $ignoreStoragePid = true, $ignoreHidden = false, $ignoreDeleted = false, $ignoreStartEnd = false )
{
	$isQueryObject = get_class( $queryOrRepository ) == Query::class;
	$isQueryBuilderObject = get_class( $queryOrRepository) == QueryBuilder::class;
	if ($isQueryObject) {
		$query = $queryOrRepository;
	} else if ($isQueryBuilderObject) {
		// s. https://bit.ly/3fFvM18
		$restrictions = $queryOrRepository->getRestrictions();
		if ($ignoreStartEnd) {
			$restrictions->removeByType( \TYPO3\CMS\Core\Database\Query\Restriction\StartTimeRestriction::class );
			$restrictions->removeByType( \TYPO3\CMS\Core\Database\Query\Restriction\EndTimeRestriction::class );
		}
		if ($ignoreHidden) {
			$hiddenRestrictionClass = \nn\t3::injectClass( \TYPO3\CMS\Core\Database\Query\Restriction\HiddenRestriction::class );
			$restrictions->removeByType( get_class( $hiddenRestrictionClass ) );
		}
		if ($ignoreDeleted) {
			$deletedRestrictionClass = \nn\t3::injectClass( \TYPO3\CMS\Core\Database\Query\Restriction\DeletedRestriction::class );
			$restrictions->removeByType( get_class($deletedRestrictionClass) );
		}
		return $queryOrRepository;
	} else {
		$query = $queryOrRepository->createQuery();
	}
	$querySettings = $query->getQuerySettings();
	$ignoreHidden = $ignoreHidden === true ? true : $querySettings->getIgnoreEnableFields();
	$ignoreDeleted = $ignoreDeleted === true ? true : $querySettings->getIncludeDeleted();
	$querySettings->setRespectStoragePage( !$ignoreStoragePid );
	$querySettings->setIgnoreEnableFields( $ignoreHidden );
	$querySettings->setIncludeDeleted( $ignoreDeleted );
	if (!$isQueryObject) {
		$queryOrRepository->setDefaultQuerySettings( $querySettings );
	}
	return $query;
}
Copied!