是否可以在 eID 脚本的数据库查询中使用限制容器?
Is it possible to use restriction containers in a database query in an eID-script?
在 eID 脚本中,我使用 QueryBuilder 从数据库中获取一些记录。该查询还 returns 隐藏和删除了记录,尽管我希望 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();
这里的问题是默认限制need a fully loaded TCA。在 eID-Scripts 中没有加载 TCA,因此您需要手动执行此操作,例如EidUtility::initTCA()
.
请注意,此方法 is deprecated 将随随时加载 TCA 的 TYPO3v10 一起删除。
在 eID 脚本中,我使用 QueryBuilder 从数据库中获取一些记录。该查询还 returns 隐藏和删除了记录,尽管我希望 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();
这里的问题是默认限制need a fully loaded TCA。在 eID-Scripts 中没有加载 TCA,因此您需要手动执行此操作,例如EidUtility::initTCA()
.
请注意,此方法 is deprecated 将随随时加载 TCA 的 TYPO3v10 一起删除。