Der Standard Paginator von Cake kann kein “group by” absetzen.
Um das zu ändern muss man die beiden Methoden paginate und paginateCount im Model überschreiben:
public function paginate($conditions, $fields, $order, $limit, $page = 1, $recursive = null, $extra = array()) {
$conditions[] ="1 = 1 GROUP BY block_id";
$recursive = -1;
return $this->findAll($conditions, $fields, $order, $limit, $page, $recursive);
}
Hier noch abfragen wieviele Spalten betroffen sind:
public function paginateCount($conditions = null, $recursive = 0, $extra = array()) {
$sql = "SELECT DISTINCT id FROM tabelle";
$this->recursive = $recursive;
$results = $this->query($sql);
return count($results);
}
Danach kann man den Paginator wie gewohnt im Controller aufrufen:
$this->paginate = array(
'Tabelle' => array('limit' => 20,
'order' => array('id' => 'desc'),
'group' => array('tab_id'))
);