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

前端之家收集整理的这篇文章主要介绍了CakePHP分页:我如何按多列排序以实现“粘性”功能?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我看到这张 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;
}
原文链接:https://www.f2er.com/php/133451.html

猜你在找的PHP相关文章