2011-08-12 9 views
0

私は 'クラブ' HABTM 'メンバー'の関係を持っています。CakePHP HABTM関係のページ設定

ClubsController :: View($ id)ビューから。そのONEクラブに所属するすべてのメンバーをペーニングテーブルに表示したいと思います。私は多くのことを試しましたが、すべて私が探していたものではありませんでした。最も一般的な、一見関連した解決策はCakePHP multi-HABTM associations with paginationのように見えましたが、これはClubsControllerからONE 'Member'に属するすべての 'Club'を与える​​でしょう。 ClubsControllerからONE 'Club'のALLメンバーに「Member」を追加しました。私はこれが明らかな仕事であるべきだと感じています。

答えて

0

「Member.club_id」=> $ idの条件を持つメンバの単純なページネーションのように聞こえます。

ps。どのバージョンのCakePHPを使用していますか?新しいバージョンは、ページ区切りafaikで少し洗練されています。

+0

最新バージョン、はい。私は朝にそれを試してみましょう。ありがとう。 –

2

私はMeiboomsの答えにコメントすることはできませんので、私は答えています。 HABTMリレーションとしてMember.club_idフィールドがあってはいけないので間違っています。 は代わりに、何を持っている必要があることは、結合テーブルです:ClubsMembers.club_idClubsMembers.member_id

としては、何をする必要が偽のhasOneの関係が希望条件を設定することができるように結合され、あなたが言及し、関連する質問への答えで説明しました。あなたの特定のケースで

:あなたはContainableBehaviorを使用しない場合

 $this->Club->Member->bindModel(array(
      'hasOne' => array('ClubsMember') 
     ), false); 

     // Set up the paginate options array 
     $this->paginate['Member'] = array(
      'contain' => array(
       'ClubsMember', 
      ), 
      'conditions' => array(
       'ClubsMember.club_id' => $club_id, 
      ), 
      //Group since the HasOne may return multiple rows for each 
      //(if $club_id is an array of IDs and a Member is in more than one of those). 
      'group' => 'Member.id', 
      'order' => 'Member.name', 
     ); 

     $this->set('members', $this->paginate('Member')); 

contain部分を無視します。 (ケーキはとにかくそれを無視します。)