2011-07-23 51 views
0

CakePHP的集團的問題..CakePHP的集團通過在PAGINATE問題PAGINATE

這是我的表結構

Friends Table 
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user1_id` int(11) NOT NULL DEFAULT '0',--> UserFrom 
    `user2_id` int(11) NOT NULL DEFAULT '0',---> UserTo 

我需要得到一個用戶的所有唯一的記錄,他的user1_id = 100

user2_id中有很多重複的值。我需要獲得唯一值 雖然我試着這個代碼,它只返回前12個值(根據限制)。 如果我評論由線組,那麼所有的記錄都顯示(包括重複的值)

$this->paginate = array(
        'conditions' => $conditions, 
     'contain'=>array(
      'UserFrom'=>array(
       'fields'=>array(
        'UserFrom.id', 
        'UserFrom.first_name', 
        'UserFrom.last_name', 
       ), 
      ), 
      'UserTo'=>array(
       'fields'=>array(
        'UserTo.id', 
        'UserTo.first_name', 
        'UserTo.last_name', 
        ) 
      ) 
      ),'limit' => 12, 
      'order' => array('Friend.id' => 'desc'), 
      'recursive'=>0, 
      'fields'=>array('DISTINCT Friend.user2_id','Friend.*'), 
      'group'=>array('UserTo.id'), 
      ); 

這是網頁

SELECT COUNT(*)AS count FROM friends AS Friend LEFT JOIN在我的SQL查詢users AS UserTo ON(Frienduser2_id = UserToid)LEFT JOIN users AS UserFrom ON(Frienduser1_id = UserFromid)WHERE UserFromnick_name ='shyam'AND Friendstatus ='朋友'GROUP BY UserToid

SELECT DISTINCT Frienduser2_idFriend。*,UserToidUserTofirst_nameUserTolast_nameUserTonick_nameUserTonameUserToicon_mediumUserToicon_bigUserFromidUserFromfirst_nameUserFromlast_nameUserFromnick_nameUserFromname FROM friends AS Friend LEFT JOIN users AS UserTo ON(Frienduser2_id = UserToid)LEFT JOIN users AS UserFrom ON(Frienduser1_id = UserFromid)WHERE UserFromnick_name ='shyam'AND Friendstatus ='朋友'GROUP BY UserToid ORDER BY Friendid desc LIMIT 12

1.首先查詢返回計數正確 2.第二個查詢,如果我把限制它不能正常工作。即有144條記錄在我的表,我需要顯示12每頁..未來只有第一頁,如果我通過使用組和限制

+0

您應該將SQL查詢轉儲添加到問題中('echo $ this-> element('sql_dump')'在您的視圖中) – lxa

+0

yes添加了sql轉儲。請幫我找到解決方案 – AnNaMaLaI

+0

「我需要每頁顯示12個..只有第一頁來了,如果我使用group by和limit」:我不明白你有什麼問題(??) –

回答

1

你應該有任何DISTINCTGROUP BY,而不是兩個 - 他們每個複製其他可能導致您的查詢問題。刪除其中一個並重試。

注:如果你想手動$this->paginate()第1其他請求的網頁,'page'參數與頁碼添加到您的$this->paginate陣列,像這樣:

$this->paginate = array_merge($this->paginate, array('page' => $pageNumber); 

但是,通常你止跌您不希望這樣做,因爲只要您在視圖中使用分頁控件(請參閱http://book.cakephp.org/view/1233/Pagination-in-Views),分頁程序會自動執行此操作(將page變量通過URL參數傳遞給您的操作)。

+0

是的,它的工作正常 – AnNaMaLaI