加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

CakePHP分页:我如何按多列排序以实现“粘性”功能?

发布时间:2020-12-13 22:34:33 所属栏目:PHP教程 来源:网络整理
导读:我看到这张 paginate can’t sort two columns at the same time的机票仍然打开,这让我相信如果没有解决方法,我想要做的就是不可能.所以我想我正在寻找的是一种解决方法. 我正在尝试做许多留言板的工作:具有“粘性”功能.我想这样做,以便无论用户点击哪个表
我看到这张 paginate can’t sort two columns at the same time的机票仍然打开,这让我相信如果没有解决方法,我想要做的就是不可能.所以我想我正在寻找的是一种解决方法.

我正在尝试做许多留言板的工作:具有“粘性”功能.我想这样做,以便无论用户点击哪个表头链接进行排序,我的模型的“粘性”字段始终是排序的第一个,然后是用户点击的任何列.我知道您可以将$this-> paginate [‘Model’] [‘order’]设置为您想要的任何内容,因此您可以将其设置为“粘性”字段并将用户选择的列放在第二位.这种方法的问题在于,在您执行此操作后,分页行为不正常.表头链接无法正常工作,切换页面也无法正常工作.还有其他一些解决方法吗?

CakePHP IRC频道上的用户ten1帮我找到了解决方案.我告诉他,如果他在这里发布了答案,那么我会将其标记为正确答案,但他说我应该自己做,因为他还没有Stack Overflow帐户.

诀窍是使用模型的“beforeFind”回调方法将“粘性”字段注入查询的“顺序”设置,如下所示:

public function beforeFind($queryData) {
    $sticky = array('Model.sticky' => 'DESC');

    if (is_array($queryData['order'][0])) {
        $queryData['order'][0] = $sticky + $queryData['order'][0];
    }
    else {
        $queryData['order'][0] = $sticky;
    }

    return $queryData;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读