作为doctrine2 and group_concat的后续问题,我一直试图将GroupConcat用户自定义函数beberlei添加到我的项目中,但没有成功。我尝试过使用offical procedure,但我使用了带有注释引用的Doctrine 2,所以我没有config.yaml文件。我偶然发现了this procedure,这似乎很简单,但是当我尝试在DQL查询中使用它时,该函数仍然无法识别。这里的错误:在Doctrine 2中添加用户自定义函数时遇到问题
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
UPDATE:
我意识到,程序可以从一个设置到另一个很大的不同。就我而言,由于我第一次使用the tutorial安装了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');
不幸的是,仍然不起作用。我试图找出班级是否真的加载。
为什么你手动管理你的供应商文件夹,而不让作曲家做呢? – Flip
我没有使用作曲家,因为我第一次将它与教义一起安装,我忘记了它的存在。我删除了整个事情,并开始了关于作曲家的教条+扩展。感谢您的提醒。 –