查询:
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 :(得分: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')
);
答案 1 :(得分:0)
试试这个
'order' => array('Entlehnungen.proben_id DESC','Entlehnungen.idDESC'),