1

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 )");

しかし、このエラーが発生します:

Message: [Syntax Error] line 0, col 152: Error: Expected Doctrine\ORM\Query\Lexer::T_COMMA, got '='

多分私は構文が間違っていますか?

4

1 に答える 1