2014-01-06 37 views
0

我正在使用CakePHP 2.3.6,我試圖使用分頁助手對數據進行排序,但我想添加最後一個空值到我的查詢。CakePHP分頁助手排序空最後

有沒有人實現過這個功能?

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

這不起作用,因爲分頁幫助程序未設置爲處理它。

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

我相當肯定,這個特定的功能應該添加在控制器(命名周圍的PaginatorComponent)甚至模型層,而不是在視圖!另外:你應該總是提到你正在使用的確切cakephp版本。 – mark

+0

謝謝馬克。我正在使用Cake 2.3.6。對我來說,有意義的是,無論是上升還是下降,空值都會持續到最後。你能想到一個案例,當你首先需要空值嗎?也許它可以被內置到核心或分頁器組件中。 – Bryan

+0

我不反對。也許你可以添加它作爲功能請求來支持。但正如所說的,它不應該是你可以從視圖層啓用的東西。 – mark

回答

0

該代碼不是最有效的,我相信我可以通過引用進行分配,但這適用於我的模型。

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; 
}