2012-05-31 151 views
0

我是CakePHP的新手,希望有人能幫助我解決這個問題。我無法自己解決這個問題。CakePHP:創建/更新記錄(外鍵)

我有一個表 '遊戲',有以下欄目:

- id 
- date 

而第二個表 '報告',有以下欄目:

- id 
- report 
- game_id (foreign key) 

遊戲hasOne報告報告belongsTo遊戲。

我正在嘗試構建一個向現有遊戲添加報表的表單。每當我添加一個新的報告,它會創建一個重複的記錄。我已經讀過,如果Cake不知道ID,這會發生。當我調試時,id字段是空的。

這是我的目標:如果還沒有關於遊戲的報告,則會出現添加鏈接,如果某個特定遊戲的報告存在,則會有更新鏈接。或者,分別有一個鏈接指向添加或編輯報表的鏈接,具體取決於是否存在報表。如何做到這一點?

我已閱讀beforeSave()-功能,您可以指定何時創建和何時編輯記錄。我不知道如何做到這一點。

目前我唯一的解決方案是驗證表單並設置game_id isUnique並通知用戶已經有一個帶有此game_id的報告。

非常感謝任何能夠幫助我的人!

回答

1

您可以預先檢查。

if ($this->Report->hasAny(array('game_id' => $this->data['Report']['game_id']))) { 
    // update 
    $existing = $this->Report->find('first', array(
    'conditions' => array(
     'game_id' => $this->data['Report']['game_id'] 
    ) 
)); 
    $this->Report->id = $existing['Report']['id']; 
} else { 
    $this->Report->create(); 
} 
// save or update 
$this->Report->save($this->data);