2012-11-09 33 views
1

我正在構建一個CakePHP驅動的網站,用戶可以互相引用,我正在考慮一個「有和屬於很多」的關係(用戶可以有多個引薦,但只能由一個引用) 是這個正確的方式,還是更好的與另一個協會/道路? 在此先感謝!CakePHP:用戶推薦系統,如何關聯?

+0

什麼是你的數據庫結構? –

+1

你需要指定一些更多的細節。如果你說一個用戶可以引用很多,但只能由另一個用戶引用,我會說你hasAndBelongsToMany,或者belongsTo(多對一)。雖然我不太理解這個問題。 – 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' 
     ) 
    )); 
}