CakePHP:用户推荐系统,如何关联?

时间:2012-11-09 11:10:44

标签: cakephp referrer

我正在建立一个CakePHP驱动的网站,用户可以互相推荐,我正在考虑“有多少人”和“属于多人”的关系(用户可以有多个推荐,但只能被推荐一个) 这是正确的方式,还是与另一个协会/道路更好? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

如果我认为用户可以推荐多个,但可能仅由一个推荐,那么这样的话应该足以满足您的需要:

//User model
$belongsTo = array(
    'Referrer' => array(
        'className' => 'User',
        'foreignKey' = > 'referrer_id'
    )
);
$hasMany = array(
    'Referree' => array(
        'className' => 'User',
        'foreignKey' => 'referrer_id'  
    )
);

有关Multiple relations to the same model

的详细信息

如何检索数据的示例:

//User model
public $actsAs = array('Containable');
public $recursive = -1; //better to set in AppModel IMO

public function getUser($userId = null) {
    if(empty($userId)) return false;
    return $this->find('first', array(
        'conditions' => array(
            $this->alias . '.' . $this->primaryKey => $userId
        ),
        'contain' => array(
            'Referrer',
            'Referee'
        )
    ));
}