2012-10-03 55 views
0

我是CAKEPHP的新手,並且首次使用聯接。我也閱讀了文檔。CakePHP:表加入

現在我有兩個模型,一個是用戶,另一個是狀態。

在狀態表中,我有一個外鍵,它是用戶表中的用戶ID。

我想用$的hasMany與條件,例如,如果用戶共享登錄狀態應該更新外鍵的有狀態表UID和UID是用戶表的主鍵

我不知道該怎麼和怎麼做。

什麼,我相信是,它應該是這樣的

class User extends AppModel 
{  
    var $name = 'User';  
    var $hasMany = array(
    'Status' => array( 
    'conditions' => array('Status.FK' => 'User.id') 
     ) 
    ); 
} 

希望我這樣做是正確的?

回答

3

的的hasMany將此代碼放在您的用戶模型:

/** 
* @see Model::$hasMany 
*/ 
    public $hasMany = array(
     'Status' => array(
      'className' => 'Status', 
      'foreignKey' => 'Status.FK', 
      'dependent' => true, 
     ), 
    ); 

但最好的方法是,在你的狀態模型中使用屬於關聯,因爲屬於關聯比的hasMany方法查詢較少。在您的控制器中,您可以使用狀態模型來檢索具有狀態的用戶。例如: 在狀態型號:

/** 
* @see Model::$belongsTo 
*/ 
    public $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'Status.FK', 
     ), 
    ); 

然後在你的控制器找到數據庫您可以使用特定的行:

$this->recursive = 1; 
    $this->Status->find('all',array('conditions' => array('User.id' => $id))); 
+0

很大的幫助。你拯救了我的生命:) –

+0

如果它解決了你的問題,請接受這個問題;) –