Doctrine2 Symfony2 Paginator失败,订单为

时间:2015-11-24 17:34:38

标签: 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]:常规错误:3065 ORDER BY子句的表达式#1   不在SELECT列表中,引用列'dctrn_result.name_5'   不在SELECT列表中;这与DISTINCT“)不兼容   AppBundle:学校/搜索:第33行的results_list.html.twig。

names表的有效列名。这确实有效,但转移到新机器并安装新版本的MySQL已经彻底打破了这一局面。有一些对此问题的引用http://www.doctrine-project.org/jira/browse/DDC-1800

但除了删除也失败的s.

之外,没有实际解决方案
 $builder->addOrderBy("name", "ASC");

我完全不知道该怎么做,因为这似乎是Doctrine2的分页器中一个相当重要的问题。

我正在使用MySQL 5.7.9。

2 个答案:

答案 0 :(得分:2)

对于给定的错误,显式select语句应该完成这项工作。

s

但如果您想在许多不同情况下使用分页,我建议使用KnpPaginatorBundle。该组件更灵活。

答案 1 :(得分:0)

我认为你必须将你的mySql版本降级到5.6