首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP分页程序order by /order by

CakePHP分页程序order by /order by
EN

Stack Overflow用户
提问于 2015-03-02 20:57:51
回答 2查看 50关注 0票数 1

查询:

代码语言:javascript
复制
SELECT  * from Entlehnungen 
WHERE status = 'retour' 
GROUP BY proben_id 
ORDER BY proben_id DESC, id DESC 

在蛋糕中,我创建了以下代码

代码语言:javascript
复制
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不能工作。

EN

回答 2

Stack Overflow用户

发布于 2015-03-03 02:00:24

我的问题在这里:

GROUP BY proben_id ORDER BY proben_id DESC, id DESC

如果按一个字段分组,这意味着大多数字段都是随机选择的。

所以如果你有像这样的数据

代码语言:javascript
复制
proben_id : id 
1    :    1
2    :    2
1    :    3 
2    :    4

查询的结果为:

代码语言:javascript
复制
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代码应该是这样的:

代码语言:javascript
复制
$this->Paginator->settings['Entlehnungen'] = array(
        'limit' => 500,
        'group' => array('Entlehnungen.proben_id','Entlehnungen.id'),
        'order' => array('Entlehnungen.proben_id' => 'DESC',
                         'Entlehnungen.id' => 'DESC')
);
票数 0
EN

Stack Overflow用户

发布于 2015-03-04 01:13:17

尝尝这个

代码语言:javascript
复制
'order' => array('Entlehnungen.proben_id DESC','Entlehnungen.idDESC'),
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28810388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档