doctrine2 と group_concatへのフォローアップの質問として、私は GroupConcat ユーザー定義関数をbeberleiから自分のプロジェクトに追加しようとしましたが、成功しませんでした。公式の手順を使用してみましたが、注釈参照で Doctrine 2 を使用しているため、config.yaml ファイルがありません。私はこの手順に出くわしました。これは十分に単純に思えますが、DQL クエリで使用しようとすると、関数はまだ認識されません。エラーは次のとおりです。
Doctrine\ORM\Query\QueryException: [Syntax Error] line 0, col 49: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'GroupConcat' in C:\xampp\htdocs\MTG\vendor\doctrine\orm\lib\Doctrine\ORM\Query\QueryException.php on line 44
アップデート :
セットアップごとに手順が大きく異なる可能性があることを認識しています。私の場合、最初にチュートリアルを使用して Doctrine をインストールしたので、その内容をファイルに入れる必要があり bootstrap.php
ます。これが私がこれまでにしたことです:
1) composer を使用して DoctrineExtensions をインストールします。
2) クラスをロードするために、bootstrap.php ファイルに以下を追加します。
Doctrine\Common\ClassLoader
$classLoader = new \Doctrine\Common\ClassLoader('DoctrineExtensions', realpath(__DIR__.'/vendor/beberlei/DoctrineExtensions/lib'));
$classLoader->register();
3) bootstrap.php ファイルを変更して関数を定義します。
$config->addCustomStringFunction('GroupConcat', 'DoctrineExtensions\Query\MySql\GroupConcat');
残念ながら、それはまだ機能しません。クラスが実際にロードされるかどうかを調べようとしています。