我正在玩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,得到'='
也许我的语法错了?
答案 0 :(得分:0)
你试过吗
$qb->having("S.status = IF( A.type = 0, 0, 1 )");