[英]TYPO3: powermail select data from own extension with typoscript
[英]From TYPO3 DB wrapper to doctrine. Select Statement
我必须使用 QueryBuilder 将一些代码从 TYPO3 DB 包装器迁移到 Doctrine。 在我的数据库中有四个条目。
原声明:
$statementToMigrate = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows(
'job_id,uid,pid,hash',
'tx_test',
'deleted = 0',
null,
null,
null,
'job_id'
);
我的 QueryBuilder 版本:
$table = 'tx_test';
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)
->getQueryBuilderForTable($table);
$sql = $queryBuilder
->select(
"job_id,uid,pid,hash"
)
->from($table)
->where(
$queryBuilder->expr()->eq('deleted', 0)
)
->execute()
->fetchAll();
原始声明为我提供了所有四个条目。 新版本只有两个。 差异在哪里? 以及如何在学说中设置“ $uidIndexField=''”?
解决方案:我添加了
$queryBuilder
->getRestrictions()
->removeByType(StartTimeRestriction::class)
->removeByType(EndTimeRestriction::class);
现在它起作用了
您好 Querybuilder 考虑了常见的“限制”,如开始/结束日期、语言、隐藏/删除。 我猜你的记录被其他一些限制过滤掉了。
有关限制的更多信息,请参见此处: https : //docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/Database/RestrictionBuilder/Index.html#database-restriction-builder
以及如何在学说中设置“ $uidIndexField=''”?
Doctrine 本身没有这样的功能,afaik。 早先在 exec_SELECTgetRows 方法中的旧 Typo3 中,该数组只是简单地遍历以在返回之前设置该索引。 现在看来你必须自己做同样的事情。 我搜索了很长时间才能找到好的,快速的,希望是原生的方式来实现这种效果,但最终我偶然发现了那个片段:
...
// return $preparedStatement->fetchAll(\PDO::FETCH_ASSOC);
$result = $preparedStatement->fetchAll(\PDO::FETCH_ASSOC);
return array_column($result, null, $uidIndexField);
最后它看起来像这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.