如何使用CakePHP模型实现FriendShip?

时间:2013-05-17 21:47:00

标签: cakephp cakephp-2.0 relational-database

在CakePHP文档中,他们实现如下!!

class Message extends AppModel {
    public $belongsTo = array(
        'Sender' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        ),
        'Recipient' => array(
            'className' => 'User',
            'foreignKey' => 'recipient_id'
        )
    );
}

class User extends AppModel {
    public $hasMany = array(
        'MessageSent' => array(
            'className' => 'Message',
            'foreignKey' => 'user_id'
        ),
        'MessageReceived' => array(
            'className' => 'Message',
            'foreignKey' => 'recipient_id'
        )
    );
}

但这对我不起作用!! 并给我一些错误,没有找到用户模型中的一些表! 如果我将HasMany的名称用于Model !!的相同名称,这将起作用。

1 个答案:

答案 0 :(得分:0)

经过一些谷歌搜索失败!! 我只是采取最简单的方式!!

public $hasMany = array(


     'Follow_me'=>array(
         'className'=>'Friend',
         'foreignKey'=>'user_to' ,
             ) , 

      'Follow_them'=>array(
         'className'=>'Friend2',
         'foreignKey'=>'user_from'
      ) );

这是用户模型 和 班级用户

现在是朋友模特

   public $belongsTo = array(


      'User'=>array(
         'className'=>'User',
         'foreignKey'=>'user_from' , 
        ) , 


   );

朋友的表将是

id || user_from || user_to ||创建||改性

现在以最简单的方式! 使用名称Friend2

创建一个新的Model Class
public $useTable = 'friends';
   public $belongsTo = array(


      'User'=>array(
         'className'=>'User',
         'foreignKey'=>'user_to' , 

      ) , 


   );

现在!! 当您从用户模型中获取数据时,数据就像那样

array(
    (int) 0 => array(
        'User' => array() ,
                'Follow_me' => array() ,
              'Follow_them' => array() , 
              'Some_Other_Relations_Goes_here' => array() 
) )

希望这会帮助你们所有人