Error: Expected known function, got amp;#39;GROUP_CONCATamp;#39;(错误:预期的已知函数,获取了GROUP_CONCATamp;#39;)
本文介绍了错误:预期的已知函数,获取了GROUP_CONCAT&;#39;的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在PhpMyAdmin中,我可以使用以下脚本,它的工作方式非常出色:
SELECT personal.city, GROUP_CONCAT(technologies.tech)
FROM personal
INNER JOIN technologies ON technologies.uid = personal.uid
WHERE personal.uid = 88
但我有一个动态方法,如下所示:
public function user($uid, $selection, $tables) {
// 1. Query builder
$queryBuilder = $this->createQueryBuilder('u')->select($selection)->where('u.uid = :uid')->addSelect('GROUP_CONCAT(t.tech)');
// 2. Get each table
foreach ($tables as $key => $value) {
$queryBuilder = $queryBuilder->innerJoin('AppEntity\' . $value, $key)->andWhere("$key.uid = :uid");
}
// 3. Finish and return the query
return $queryBuilder
->setParameter('uid', $uid)
->getQuery()
->getResult()
;
}
如果我运行它,我将收到以下错误消息:
[语法错误]第0行,第25列:错误:预期的已知函数,已获取 ‘GROUP_CONCAT’
GROUP_CONCAT
我到底做错了什么?
that question的回答对我没有帮助,因为他们的问题指的是Symfony2,但我使用的是Symfony4。
推荐答案
GROUP_CONCAT不是DQL函数。您不能在DQL中使用MySQL函数。 以下是Doctrine在DQL中支持的函数列表: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/dql-doctrine-query-language.html#dql-functions
我强烈建议您不要在应用程序中使用GROUP_CONCAT。您可以在单独的查询中以数组的形式获取数据,并在PHP中将其连接起来。应该没有明显的性能开销。 但如果您真的必须使用它,则必须编写您自己的用户定义的DQL函数。 以下是它的教程: https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/cookbook/dql-user-defined-functions.html 下面是如何在symfony中注册DQL函数: https://symfony.com/doc/current/doctrine/custom_dql_functions.html这篇关于错误:预期的已知函数,获取了GROUP_CONCAT&;#39;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:错误:预期的已知函数,获取了GROUP_CONCAT&;#39;
基础教程推荐
猜你喜欢
- 在多维数组中查找最大值 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01