结合使用SQL函数和TYPO3

问题描述 投票:0回答:1

我正在将旧的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扩展名迁移到当前版本,并试图将我的数据库访问权限更改为使用学说。在大多数情况下,效果很好,但现在我遇到了一些选择查询,...

doctrine typo3-9.x typo3-extensions doctrine-query
1个回答
0
投票

我默认使用php将年份解析为完整日期,并将其转换为unix时间戳。使用ORM的选项在那里,但实在太多了。

© www.soinside.com 2019 - 2024. All rights reserved.