如何在doctrine2查询构建器where语句中添加运算符

时间:2012-06-14 20:03:54

标签: php symfony doctrine doctrine-orm

我试图从一个表中选择,其中所选的持续时间除以输入持续时间等于没有余数。

$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的查询构建器吗?

1 个答案:

答案 0 :(得分:10)

符号%不是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.