【问题标题】:How to add operators in doctrine2 query builder where statement如何在 dictionary2 查询生成器 where 语句中添加运算符
【发布时间】:2012-06-14 20:03:53
【问题描述】:

我试图从所选持续时间除以条目持续时间等于没有余数的表中进行选择。

$qb = $em->createQueryBuilder()
->from('AcmeBlogBundle:Entry', 'e')
->andWhere(":duration % e.duration = 0")
->setParameter('duration', $duration);

这会返回错误:

[Syntax Error] line 0, col 226: Error: Expected =, <, <=, <>, >, >=, !=, got '%' 

这可以在纯 SQL 中工作。有人知道如何使用 Doctrine 的查询生成器来做到这一点吗?

【问题讨论】:

    标签: php symfony doctrine doctrine-orm


    【解决方案1】:

    符号% 不是 DQL 运算符。试试这个:

    $qb = $em->createQueryBuilder()
    ->from('AcmeBlogBundle:Entry', 'e')
    ->andWhere("mod(:duration,e.duration) = 0")
    ->setParameter('duration', $duration);
    

    或阅读:http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html 12.5.1 段。

    MOD(a, b) - Return a MOD b.
    

    【讨论】:

    • 感谢您的建议,但 mod 在查询中不起作用。我再次查看文档,它没有列出模数,甚至没有在 where 语句中指示任何计算。我将不得不继续寻找,但这是个好主意。
    • 你是个天才。 MOS(a,b) 就像一个魅力。非常感谢!
    猜你喜欢
    • 2013-12-09
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    相关资源
    最近更新 更多