我一直在浏览文档/谷歌,但没有找到任何解决方案。

有没有什么方法可以在没有本地 mysql 的情况下使用 Doction2 (DQL) 执行或模仿 GROUP_CONCAT?

例如。:

SELECT u.id, u.name, [GROUP_CONCAT(...)] AS user_messages
FROM models\Users u
LEFT JOIN models\Messages m
GROUP BY u.id

要得到
GROUP_CONCAT(m.id,'|',m.title SEPARATOR ':')

现在我正在使用 createNativeQuery() 来运行它,但我正在寻找一个 dotric2 解决方案。

提前致谢

最佳答案

是的,这可以通过 Beberlei(Doctrine2 的核心开发人员)的 DoctrineExtensions 实现。在doctrine2 中,您可以通过扩展functionNode 类来定义您自己的查询表达式。

最简单的方法是在您的项目中包含 DoctrineExtensions 库。我不知道您使用的是 Zend Framework 还是 Symfony 或任何其他框架,因此无法帮助您嵌入它。

您可以在此处查看 DoctrineExtensions:

https://github.com/beberlei/DoctrineExtensions

和组功能:

https://github.com/beberlei/DoctrineExtensions/blob/master/src/Query/Mysql/GroupConcat.php

请注意,您应该使用 GroupConcat 作为函数名,而不是像 MySQL 中那样使用 GROUP_CONCAT。

希望对你有帮助!

关于php - 学说2和group_concat,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7864345/

10-12 04:54