作为对教条 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');
不幸的是,它仍然不起作用。我试图找出类是否实际加载。