在我的 CakePHP 应用程序中,我的用户能够与其他用户成为朋友。
这是通过一个users
表和一个friends_users
具有以下列的表来完成的:id, user_id, friend_id, status
用于关系。
因此,如果用户 id 1 是用户 id 2 的朋友,则 user_id 中将有 1,friend_id 列中将有 2
User 的模型如下所示:
public $hasAndBelongsToMany = array(
'Friend'=>array(
'className' => 'User',
'joinTable' => 'friends_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'friend_id'
)
);
查看用户 1 时,它工作正常并将用户 2 显示为朋友。但是在查看用户 2 时,它并没有将用户 1 显示为朋友......所以当反向查看时,它并没有填满数据!
这是我用来为用户列出朋友的方法:
$user = $this->User->find('first', array(
'conditions' => array('User.id' => $this->Auth->user('id')),
'contain'=>'Profile'
));
$friends = $this->User->find('first',
array(
'conditions'=>array(
'User.id'=>$user['User']['id']
),
'contain'=>array(
'Profile',
'Friend'=>array(
'Profile',
'conditions'=>array(
'FriendsUser.status'=>1
)
)
)
)
);
$this->set('friends', $friends);
任何想法为什么会发生这种情况?我浏览了文档,但对我来说一切都很好。
理想情况下,我想修复我的代码,而不是指向其他资源!
页面查询:http: //pastebin.com/zQnBVM2X