在CakePHP中添加好友功能

时间:2011-02-06 05:38:18

标签: cakephp cakephp-1.3

我需要在我的应用程序中添加一个简单的朋友功能,通过一些研究,我需要一个连接回用户表的连接表吗?这样的事情:(我已经有了一个用户表)

  

用户-友谊-用户

任何人都可以提供更多详细信息吗?

1 个答案:

答案 0 :(得分:3)

友谊表应包含以下列:

id Integer
user_from (the user who requested friendship)
user_to (the user who accepted friendship)
created (optional to track when your friendship started)

然后你需要创建适当的模型关系。

class User extends AppModel {
   ...
   var $hasMany = array(
      'UserFrom'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_from'
      ),
      'UserTo'=>array(
         'className'=>'Friendship',
         'foreignKey'=>'user_to'
      )
   );
   var $hasAndBelongsToMany = array(
      'Friendship' => array(
          'className' => 'User',
          'joinTable' => 'friendships',
          'foreignKey' => 'user_from',
          'associationForeignKey' => 'user_to'
   );
   ...
}

class Friendship extends AppModel {
   ...
   var $belongsTo = array(
      'UserFrom'=>array(
         'className'=>'User',
         'foreignKey'=>'user_from'
      ),
      'UserTo'=>array(
         'className'=>'User',
         'foreignKey'=>'user_to'
      )
   )
   ...
}

这样您就可以在每个模型中定义2个关系。您也可以添加HABTM关系。运行bake脚本来构建控制器和视图。然后在你的代码中你可以使用这样的东西:

$this->User->UserFrom->find('all', 
    array(
        'conditions'=>array('user_from'=>1), 
        'contain'=>array('UserTo')
    )
);

这应该返回ID为1的用户的朋友和所有朋友的详细信息。

小心递归查询。 :)