我正在将旧的TYPO3扩展名迁移到当前版本,并试图将我的数据库访问权限更改为使用学说。在大多数情况下,效果很好,但现在我遇到了一些选择查询,这些查询利用了SQL函数,例如“年份(FROM_UNIXTIME())”。
我尝试使用以下形式的sql函数:
$queryBuilder = GeneralUtility::makeInstance(ConnectionPool::class)->getQueryBuilderForTable('mytable');
$queryBuilder
->select('i.*','c.title AS cat_title','c.uid AS cat_uid')
->from('mytable','i')
->join('c'
...
)
->join('d'
...
)
->where(
$queryBuilder->expr()->eq('Year(FROM_UNIXTIME(i.datetime))', $queryBuilder->createNamedParameter($year, \PDO::PARAM_STR))
)
问题仅在于where部分,如果我从SQL语句中读取到信息,则将where子句简单地省略,就好像代码行从未发生过。
然后,我在where语句周围制作了调试语句,并将其封装在try catch块中,并附加了日志:它执行正常,没有错误,但不执行任何操作。
在Google之后,我现在相信我将需要再次使用DQL user functions来实现该功能,但是typo3网站上的文档没有提及这一点,因此我不确定该如何进行。] >
有人能指出我正确的方向吗?
任何帮助将不胜感激
关于Theo
我正在将旧的TYPO3扩展名迁移到当前版本,并试图将我的数据库访问权限更改为使用学说。在大多数情况下,效果很好,但现在我遇到了一些选择查询,...
我默认使用php将年份解析为完整日期,并将其转换为unix时间戳。使用ORM的选项在那里,但实在太多了。