1

可能的重复:
CakePHP 订阅用户模型

我有三个模型

  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 回答