Php Doctrine2 Symfony2分页器与orderBy一起失败
在回购协议中使用此代码Php Doctrine2 Symfony2分页器与orderBy一起失败,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,在回购协议中使用此代码 $builder = $this->createQueryBuilder("s"); $builder->addOrderBy("s.name", "ASC"); $pagi = new Paginator($builder->getQuery(), true); $data = $pagi->getIterator()->getArrayCopy(); 导致此错误 SQLSTATE[HY000]:一般错误:ORDER BY子
$builder = $this->createQueryBuilder("s");
$builder->addOrderBy("s.name", "ASC");
$pagi = new Paginator($builder->getQuery(), true);
$data = $pagi->getIterator()->getArrayCopy();
导致此错误
SQLSTATE[HY000]:一般错误:ORDER BY子句的3065表达式#1
不在选择列表中,引用列“dctrn\u result.name\u 5”,其中
不在选择列表中;这与中的DISTINCT命令不兼容
AppBundle:Schools/Search:results\u list.html.twig,第33行
name
是s
表的有效列名。这确实有效,但移动到新机器并安装新版本的MySQL完全破坏了这一点。有一些参考资料涉及此问题
但是除了移除同样失败的s.
之外,没有其他实际的解决方案
$builder->addOrderBy("name", "ASC");
我完全不知道该怎么办,因为这似乎是Doctrine2的paginator中一个相当重要的问题
我使用的是MySQL 5.7.9。对于给定的错误,应该使用显式select语句
$builder = $this->createQueryBuilder("s");
$builder->select("s")
->orderBy("s.name", "ASC");
但是如果您想在许多不同的情况下使用分页,我建议您使用。该组件更灵活。我认为您必须将mySql版本降级到5.6谢谢。对该捆绑包进行重构也很有效,而且非常简单。