Symfony2 Doctrine查询生成器使用日期函数

时间:2018-03-13 05:00:27

标签: symfony dql doctrine-query

如何在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列时收到了错误的未定义关键字

提前致谢

2 个答案:

答案 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