检索特定于订阅用户的帖子

时间:2012-11-05 12:19:20

标签: php cakephp

  

可能重复:
  CakePHP Subscribe Users Model

我有三个模特

  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他订阅的用户的帖子?

    我只是需要一些提示,因为我无法做出任何适当的逻辑。

1 个答案:

答案 0 :(得分:1)

我总是发现最简单的方法是:找到用户ID是用户A的朋友:

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

之后,您可以找到Post.user_id IN您的用户ID数组中发布的所有帖子:

$this->Post->find('all',array('conditions'=>array('Post.user_id'=>$friendIds));