我有三个模特
我想要的是,如果用户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他订阅的用户的帖子?
我只是需要一些提示,因为我无法做出任何适当的逻辑。
答案 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));