如何使用DoctrineExtensions提供的IF语句

时间:2012-06-04 02:57:55

标签: if-statement doctrine doctrine-orm

我正在玩DoctrineExtensions但无法管理它。注册DoctrineExtensions后,我在Zend Framework中使用了以下DQL行:

$qb->having(new IfElse("A.type = 0", new FindInSet(1, new GroupConcat('B.id', ',')) >0 , '1') );

但是得到这个错误信息:

  

异常信息:

     

消息:类型'DoctrineExtensions \ Query \ Mysql \ IfElse'的表达式   在这种情况下不允许。*

你能帮我指出我的命令或任何关于如何使用DoctrineExtensions的文件中的错误吗?

更新:

我找到了一种通过以下方式实现自定义功能的方法: 我已经通过将此行添加到boostrap来尝试了一下:

$config->addCustomStringFunction('IF', 'DoctrineExtensions\Query\Mysql\IfElse');

在DQL中使用它:

$qb->having("IF( A.type = 0, S.status = 0, S.status = 1 )");

但是得到这个错误:

消息:[语法错误]第0行,第152栏:错误:预期的Doctrine \ ORM \ Query \ Lexer :: T_COMMA,得到'='

也许我的语法错了?

1 个答案:

答案 0 :(得分:0)

你试过吗

$qb->having("S.status = IF( A.type = 0, 0, 1 )");