2015-03-02 36 views
1

查詢:CakePHP的Paginatorgroup通過/ ORDER BY

SELECT * from Entlehnungen 
WHERE status = 'retour' 
GROUP BY proben_id 
ORDER BY proben_id DESC, id DESC 

在蛋糕創建下面的代碼

unset($this->request->params['named']['sort']); 
$this->Paginator->settings['Entlehnungen'] = array(
     'limit' => 500, 
     'order' => array('Entlehnungen.proben_id' => 'DESC', 
         'Entlehnungen.id' => 'DESC'), 
     'group' => array('Entlehnungen.proben_id') 
); 
$entlehnungens = $this->paginate(null, $conditions); 

的問題是,它看起來像該order by不起作用。

回答

0

恕我直言,這個問題是在這裏:

GROUP BY proben_id ORDER BY proben_id DESC, id DESC

,如果你通過一個字段,這意味着大部分區域將隨機選擇組。

,所以如果你有一個像

proben_id : id 
1 : 1 
2 : 2 
1 : 3 
2 : 4 

數據查詢的結果是:

proben_id : id 
1 : 1 
2 : 2 

,所以你不能id訂購,

所以,如果你只有一個分組字段然後

ORDER BY proben_id DESC, id DESC等於ORDER BY proben_id DESC

,因爲沒有什麼proben_id後下令 - 你的每一個獨立proben_id

僅有1行爲了讓您的第二級命令你需要包括id字段作爲分組字段:

GROUP BY proben_id, id ORDER BY proben_id DESC, id DESC

而php代碼應該是這樣的:

$this->Paginator->settings['Entlehnungen'] = array(
     'limit' => 500, 
     'group' => array('Entlehnungen.proben_id','Entlehnungen.id'), 
     'order' => array('Entlehnungen.proben_id' => 'DESC', 
         'Entlehnungen.id' => 'DESC') 
); 
0

試試這個

'order' => array('Entlehnungen.proben_id DESC','Entlehnungen.idDESC'),