在 Repo 中使用此代码
$builder = $this->createQueryBuilder("s");
$builder->addOrderBy("s.name", "ASC");
$pagi = new Paginator($builder->getQuery(), true);
$data = $pagi->getIterator()->getArrayCopy();
导致这个错误
SQLSTATE[HY000]: General error: 3065 Expression #1 of ORDER BY clause is not in SELECT list, references column 'dctrn_result.name_5' which is not in SELECT list; this is incompatible with DISTINCT") in AppBundle:Schools/Search:results_list.html.twig at line 33.
name
是 s
表的有效列名。这确实有效,但是移动到新机器并安装新版本的 MySQL 已经完全打破了这一点。这个问题有一些引用http://www.doctrine-project.org/jira/browse/DDC-1800
但除了删除 之外没有实际的解决方案。
也失败了
$builder->addOrderBy("name", "ASC");
我完全不知道该做什么,因为这似乎是 Doctrine2 分页器中的一个相当大的问题。
我正在使用 MySQL 5.7.9。
最佳答案
对于给定的错误,显式选择语句应该完成这项工作。
$builder = $this->createQueryBuilder("s");
$builder->select("s")
->orderBy("s.name", "ASC");
但我建议使用 KnpPaginatorBundle如果您想在许多不同的情况下使用分页。该组件更灵活。
关于php - Doctrine2 Symfony2 分页器因 orderBy 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33900219/