gal*_*hen 4 php mysql group-concat doctrine-orm
我一直在浏览文档/谷歌,但没有找到任何解决方案.
有没有办法使用没有本机mysql的doctrine2(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
Run Code Online (Sandbox Code Playgroud)
要得到
GROUP_CONCAT(m.id,'|',m.title SEPARATOR ':')
Run Code Online (Sandbox Code Playgroud)
现在我正在使用createNativeQuery()来运行它,但我正在寻找一个doctrine2解决方案.
提前致谢
是的,这可以通过Beberlei(Doctrine2的核心开发人员)的DoctrineExtensions实现.在doctrine2中,您可以通过扩展functionNode类来定义自己的查询表达式.
最简单的方法是在项目中包含DoctrineExtensions lib.我不知道你使用Zend Framework或Symfony或任何其他框架,所以无法帮助你嵌入它.
您可以在此处查看DoctrineExtensions:
https://github.com/beberlei/DoctrineExtensions
和小组功能:
https://github.com/beberlei/DoctrineExtensions/blob/master/src/Query/Mysql/GroupConcat.php
请注意,您应该像在MySQL中一样使用GroupConcat作为函数名而不是GROUP_CONCAT.
希望它能帮到你!