2015-05-11 35 views
1

我是一個用cakephp編程的新手,所以我實現了一個簡單的用戶遊戲應用程序。用戶和遊戲之間存在「hasMany」關係。一個遊戲完全由一個用戶創建。因此,遊戲模型中有一個名爲「user_id」的字段。我已經在使用auth組件,用戶可以登錄系統。現在,我希望該用戶可以將模型添加到遊戲中,但是應該自動添加user_id(通過訪問會話數據)。我怎麼能做到這一點?自動添加外鍵(登錄用戶的用戶ID)

史坦尼斯:)

+2

歡迎來到堆棧溢出。請考慮添加您當前的代碼以及您迄今爲止所嘗試的內容,因爲此問答的目的不在於我們爲您編寫整個代碼。 –

回答

1

現在,我想,用戶可以添加遊戲模式,但USER_ID應自動添加(由acessing會話數據)。我怎麼能做到這一點?

首先,我強烈建議你去做官方的博客教程,因爲它會涵蓋這樣的問題給你。

在控制器:

public function add() { 
    if ($this->request->is('post') { 
     $this->request->data['Game']['user_id'] = $this->Auth->user('id'); 
     $this->Game->save($this->request->data); 
    } 
} 

但可以肯定應該做的邏輯移動到模型更好,記住:脂肪模型,控制器。下面是一個細分和簡單的例子:

// Controller 
public function add() { 
    if ($this->request->is('post') { 
     $this->Game->add($this->Auth->user('id'), $this->request->data); 
    } 
} 

// Model 
public function add($userId, $postData) { 
     $postData[$this->alias]['user_id'] = $userId; 
     return $this->save($this->request->data); 
    } 
} 

通常你不想訪問會話直接在模型,因爲它需要你使用靜態或單調用AUTH組件或會話對象,我們希望儘可能避免這種情況。