0

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

残念ながら、それはまだ機能しません。クラスが実際にロードされるかどうかを調べようとしています。

4

1 に答える 1

0

ファイルを正しく変更した後bootstrap.phpでも、関数を機能させることができませんでした。いくつかいじった後、クエリはまだ機能しませんが、関数は次のフォームを使用して機能することがわかりまし

$results = $s->select("GroupConcat(t.name) As Name")->from("Type","t")->getQuery()->getResult();

結局のところ、私の問題は GroupConcat を使用した DQL 構文にあります。

于 2013-08-19T00:45:40.870 に答える