【问题标题】:CakePHP Pagination Helper Sort Nulls LastCakePHP 分页助手将 Null 排序到最后
【发布时间】:2014-01-24 06:20:45
【问题描述】:

我正在使用 CakePHP 2.3.6 并且我正在尝试使用分页助手对数据进行排序,但我想将 Nulls Last 添加到我的查询中。

有人实现了这个功能吗?

echo $this->Paginator->sort('status_id', null, array('direction' => 'desc'));

这不起作用,因为没有设置分页助手来处理它。

echo $this->Paginator->sort('status_id', null, array('direction' => 'desc NULLS LAST'));

【问题讨论】:

  • 我相当肯定这个特定的功能应该被添加到控制器中(特别是在 PaginatorComponent 周围)甚至模型层,而不是在视图中!另外:您应该始终提及您正在使用的确切 cakephp 版本。
  • 谢谢马克。我正在使用蛋糕 2.3.6。对我来说,无论是升序还是降序,空值都排在最后是有道理的。你能想出一个你首先想要空值的情况吗?也许它可以内置到核心或分页器组件中。
  • 我不反对。也许您可以将其添加为功能请求以支持此功能。但如前所述,它不应​​该是您可以从视图层启用的功能。
  • 再次感谢。为了让我开始,我应该在模型或控制器的哪个位置添加可以与分页器助手很好地配合使用的代码?
  • 这可能是分页器组件上的东西。虽然我不知道数据库类目前是否支持此功能。你也可以开一张简单的票——只说明你想要什么。而且还没有代码。

标签: sorting cakephp null pagination helper


【解决方案1】:

代码不是最有效的,我确信我可以通过引用进行分配,但这适用于我的模型。

function beforeFind( $query)
{
    $queryOrderArray = $query['order'];
    if(isset($queryOrderArray)){
        $i = 0;
        foreach($queryOrderArray as $myOrderArray){
            if(isset($myOrderArray) && is_array($myOrderArray)){
                foreach($myOrderArray as $myField => $myOrder){
                    if($myOrder == 'desc'){
                        $myOrder .= ' NULLS LAST';
                        $myOrderArray[$myField] = $myOrder;
                    }
                }
            }
            $queryOrderArray[$i] = $myOrderArray;
            $i++;
        }
    }
    $query['order'] = $queryOrderArray;
    return $query;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 2012-12-30
    • 1970-01-01
    • 2011-05-21
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多