2016-07-10 26 views
1

私はバッジ、ユーザー、badges_usersテーブルを既に持っています。 バッジコントローラにリスト()を作成して、セッションユーザが持っているすべてのバッジをリストしたいと思います。これまでのところ、私はこれを手に入れました。それはあなたがリストを構築する必要がありますのでbadge_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

badge_usersテーブルではなく、バッジテーブルでのみ利用可能user_idのフィールドと一緒に動作するように持っている、と定義するの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は魔法のように動作します。私はこのようなコントローラを持つことができるのか分からなかったが、公式のDocは決してそれを述べていない、なぜ私は不思議に思っていた。 – benone

+0

ORMを使用したCakePHPでは、実際にテーブル関係が基本的な概念です。ベークの使用を避け、概念を完全に理解し、コードを手作業で書くべきです。がんばろう :) –