【问题标题】:Symfony2 Doctrine query builder use date functionSymfony2 Doctrine 查询生成器使用日期函数
【发布时间】:2018-03-13 05:00:26
【问题描述】:

如何在教义查询生成器中使用日期时间函数,下面的sql查询需要转换教义查询(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 列收到错误未定义关键字

提前致谢

【问题讨论】:

    标签: symfony dql doctrine-query


    【解决方案1】:

    Doctrine 支持以下内置函数http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#functions-operators-aggregates

    所以要么实现自己的函数,要么使用普通的 SQL 查询 $emClient->getConnection()->executeQuery()

    【讨论】:

      【解决方案2】:

      为了使用这些功能,如果它们不存在,您需要自己实现它们,如@Denis Alimov 建议的那样,或者您可以使用已经实现的功能和Doctrine Extensions Bundle。最后一个选项是获取所有需要的数据并在 PHP 端执行一些操作。您还可以执行 PURE sql 并将其映射到教义 ResultSetMappingBuilder

      【讨论】:

        猜你喜欢
        • 2012-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-23
        • 2013-03-11
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        相关资源
        最近更新 更多