2011-09-15 65 views
0

我有一個分頁程序如下:CakePHP的分頁程序不分頁

var $paginate = array(
     'order'=>array('ReleaseServer.server_environment'=>'ASC', 
          'ReleaseServer.server_name'=>'ASC'), 
     'joins'=>array(
      array(
       'table' => 'release_server_to_components', 
       'alias' => 'ReleaseServerToComponent', 
       'type' => 'LEFT', 
       'foreignKey' => false, 
       'conditions'=> array('ReleaseServer.id = ReleaseServerToComponent.release_server_id') 
      ), 
      array(
       'table' => 'release_components', 
       'alias' => 'ReleaseComponent', 
       'type' => 'LEFT', 
       'foreignKey' => false, 
       'conditions'=> array('ReleaseServerToComponent.release_component_id = ReleaseComponent.id') 
      ) 
     ), 
     'group'=>array('ReleaseServer.id'), 
     'contain' => array(
       'ReleaseServerToComponent' => array(
         'ReleaseComponent' => array(
          'Release' 
          ) 
         ) 
       ), 
     'limit' => 25, 
    ); 

然後在我的控制器功能我做到以下幾點:

$this->set('allServers', $this->paginate('ReleaseServer', $conditions)); 

$conditions對於查詢一些額外的條件。

正如你看到上面我設定的上限爲25

有29個記錄中卻數據庫,但頁面只顯示25頁說,只有一個頁面。

當一個人點擊其中一個列標題來訂購它們時,有些行在神奇地出現之前並不存在,而其他行則消失。爲什麼會這樣?

如果您需要任何其他信息,請讓我知道

UPDATE

現在我看到這個問題存在於paginate變量的group一部分,但爲了使我需要它所以我沒有得到同一事物的多行。

我該如何解決這個問題?

回答

0

我解決它加入了新的功能paginateCount()我的模型:

function paginateCount($conditions = null, $recursive = 0, $extra = array()) 
{ 
    $count = $this->find('count', array(
     'fields' => 'DISTINCT ReleaseServer.id', 
     'conditions' => $conditions 
    )); 
    return $count; 
}