2015-11-24 40 views
2

此錯誤Doctrine2 Symfony2的分頁程序失敗,排序依據

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回購

$builder = $this->createQueryBuilder("s"); 

$builder->addOrderBy("s.name", "ASC"); 

$pagi = new Paginator($builder->getQuery(), true); 

$data = $pagi->getIterator()->getArrayCopy(); 

結果中使用此代碼是一個有效的列名稱爲s表。這確實奏效,但轉向新機器並安裝新版本的MySQL已經徹底打破了這一點。對於這個問題http://www.doctrine-project.org/jira/browse/DDC-1800

但不是刪除了s.也未能

$builder->addOrderBy("name", "ASC"); 

我做什麼完全喪失,因爲這似乎是一個相當大的問題之外,沒有其他實際的解決方案提供一些參考在Doctrine2的分頁器中。

我正在使用MySQL 5.7.9。

回答

2

對於給定的錯誤,顯式選擇語句應該完成這項工作。

$builder = $this->createQueryBuilder("s"); 
$builder->select("s") 
     ->orderBy("s.name", "ASC"); 

但我會建議使用KnpPaginatorBundle,如果你想在許多不同的情況下使用分頁。該組件更加靈活。

+0

謝謝。重構該捆綁包的工作也很簡單。 –