是否可以在eID脚本的数据库查询中使用限制容器?

时间:2019-05-23 12:26:38

标签: typo3 typo3-8.x

在eID脚本中,我使用 QueryBuilder 从数据库中获取一些记录。该查询还返回隐藏和删除的记录,尽管我希望 DefaultRestrictionContainer 排除这些记录。 为了使限制容器起作用需要某种初始化吗?可以在eID脚本中使用限制容器吗?

调用$queryBuilder->getRestrictions()表示 DefaultRestrictionContainer 确实存在。 调用$queryBuilder->getSQL()显示限制未添加到查询中。

查询是如此简单:

/** @var \TYPO3\CMS\Core\Database\Query\QueryBuilder $queryBuilder */
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('my_table');
$statement = $queryBuilder
    ->select('a', 'b')
    ->from('my_table')
    ->where(
        $queryBuilder->expr()->eq('c', $queryBuilder->createNamedParameter(123, \PDO::PARAM_INT))
    )
    ->execute();

1 个答案:

答案 0 :(得分:1)

这里的问题是默认限制need a fully loaded TCA。在eID脚本中,未加载任何TCA,因此您需要手动执行此操作,例如与EidUtility::initTCA()

请注意,此方法is deprecated将随TYPO3v10一起删除,而TCPO在任何时候都已加载TCA。