2016-07-10 160 views
1

我已經有徽章,用戶和badges_users表。 我想在徽章控制器中建立一個列表()來列出會話用戶擁有的所有徽章。到目前爲止,我得到了這一點,我不知道如何繼續。它具有與分頁程序組件Cakephp中的多對多關係

public function list() { 
    $this->Badge->recursive = 0;   
    $this->paginate['conditions'] = array('user_id' => $this->Auth->user('id'));    
    $this->Paginator->settings = $this->paginate;   
    $this->set('badges', $this->paginate()); 
} 

回答

1

USER_ID字段僅在badge_users表中可用,而不是徽章表一起工作,所以你應該建立在badge_users控制列表(),並定義包含參數在PAGINATE設置徽章模型。

//in badges_users controller 
public function list() { 
    $this->BadgesUsers->recursive = 2;  
    $this->paginate['conditions'] = array('user_id' => $this->Auth->user('id'));  

//contain parameter 
$this->paginate['contain'] = array('Badges'); 

    $this->Paginator->settings = $this->paginate;   
    $this->set('badges', $this->Paginator->paginate('BadgesUsers)); 
} 
+0

這真棒,我只是烤BadgesUser和everthing像魔術般的作品。我不知道我們可以有這樣的控制者,官方的文件從來沒有說,我想知道爲什麼。 – benone

+0

實際上表格關係是CakePHP中使用ORM的基本概念。你應該避免使用烘烤,完全理解這個概念,並手動編寫代碼。祝你好運 :) –