如何在doctrine查询生成器中使用datetime函数,下面的sql查询需要转换doctrine查询(DQL)。
SELECT SEC_TO_TIME((SUM(TIMESTAMPDIFF(MINUTE, StartTime, EndTime)) + COUNT(*)) * 60) as hours FROM table_name
下面我试过了
$qb = $emClient->createQueryBuilder()->select('SEC_TO_TIME((SUM(TIMESTAMPDIFF(MINUTE, en.startTime, swenendTime)) + COUNT(*)) * 60) as hours')
->from('AppBundle:MyEntity', 'en')
$result = $qb->getQuery()->getArrayResult();
但我在第0,7列时收到了错误的未定义关键字
提前致谢
答案 0 :(得分:3)
Doctrine支持以下内置函数http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#functions-operators-aggregates
因此要么实现自己的函数,要么使用纯SQL查询
$emClient->getConnection()->executeQuery()
答案 1 :(得分:1)
要使用这些功能,您需要自己实现它们,如果它们不存在,如@Denis Alimov建议的那样,或者您可以使用已经实现的功能Doctrine Extensions Bundle。最后一个选项是获取所需的所有数据并在PHP端执行一些操作。您还可以执行PURE sql并使用ResultSetMappingBuilder
将其映射到doctrine