1

重複の可能性:
CakePHP サブスクライブ ユーザー モデル

私は3つのモデルを持っています

  1. ユーザー
  2. 役職
  3. 友情

私が望むのは、ユーザー A がユーザー B とユーザー C を購読している場合、ユーザー A はユーザー B と C が共有する投稿のみを表示でき、他のユーザーは表示できないということです。

まず、適切な関連付けを行ったかどうかを知りたいです。

ユーザー モデル:

public $hasAndBelongsToMany = array(
      'UserFriendship' => array(
          'className' => 'User',
          'joinTable' => 'friendships',
          'foreignKey' => 'user_from',
          'associationForeignKey' => 'user_to'
        )
   );

友情モデル:

 public $hasMany = array(
      'FriendFrom'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_from'
      ),
      'FriendTo'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_to'
      )
   );

public $belongsTo = array(
  'UserFrom'=>array(
     'className'=>'User',
     'foreignKey'=>'user_from'
  ),
  'UserTo'=>array(
     'className'=>'User',
     'foreignKey'=>'user_to'
  )

);

関連付けが正しい場合、Post ModelまたはPost Controller、またはユーザーAが購読しているユーザーの投稿を表示する他の場所と正確に何をしなければなりませんか?

適切なロジックを作成できないため、少しヒントが必要です。

4

1 に答える 1

1

これを行う最も簡単な方法は、ユーザー A の友人であるユーザー ID を見つけることです。

$this->User->Friendship->find('list', array('fields'=>array('Friendship.user_to'),'conditions'=>array('Friendship.user_from'=>$this->Auth-User('id'));

その後、がユーザー ID の配列でPost.user_idある場所に投稿されたすべての投稿を見つけることができます。IN

$this->Post->find('all',array('conditions'=>array('Post.user_id'=>$friendIds));
于 2012-11-05T12:22:46.723 に答える