0

作为对教条 2 和 group_concat的后续问题,我一直在尝试将来自beberlei的 GroupConcat 用户定义函数添加到我的项目中,但没有成功。我尝试使用官方程序,但我使用带有注释引用的 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) 使用作曲家安装 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

It turns out that after modifying correctly my bootstrap.php file, I was still unable to make the function work. After some fiddling, I found out that while my query still doesn't work, the function do work using this form :

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

So, after all, my problem resides in the DQL syntax using GroupConcat.

于 2013-08-19T00:45:40.870 回答