2012-11-09 2 views
1

나는 사용자가 서로를 참조 할 수있는 CakePHP 기반의 웹 사이트를 구축하고 있는데, 나는 "많은 사람들이 있고있다"관계에 대해 생각하고 있었다. (사용자는 여러 개의 추천을 가질 수 있지만 하나만 참조 할 수있다.) is this 올바른 방법이나 다른 협회/도로에서 더 낫습니까? 미리 감사드립니다. 나는 사용자가 많은 참조 할 수 있다고 가정에서 올바른 해요,하지만 하나에 의해 참조 될 수있는 경우CakePHP : 사용자 추천 시스템, 연결하는 방법?

+0

데이터베이스 구조는 무엇입니까? –

+1

당신은 사용자가 많은 것을 참조 할 수 있다고 말하면 하나 이상의 다른 사용자에 의해서만 심판을받을 수 있다고 말하면 좀 더 자세한 내용을 지정해야합니다. 나는 hasAndBelongsToMany를 제안하거나 belongsTo (Many to one)라고 말합니다. 나는 그 질문을 이해하지 못한다. – Qben

답변

0

,이 같은 당신이 무슨 일을하는지에 대한 충분합니다 : Multiple relations to the same model에 대한

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

세부 사항.

데이터를 검색하는 방법의 예 :

//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' 
     ) 
    )); 
}