2012-02-09 93 views
0

我正在爲模型保存多個記錄,並且如果company_id已存在,我想更新現有記錄。cakephp嘗試更新記錄ID已存在的MySQL記錄

我使用的型號驗證碼:

function beforeSave() { 

     $found = $this->find("first",array(
       "recursive" => -1, 
       "conditions" => array("company_id" => $this->data['Osm']['company_id']))); 
     if(isset($found)) 
     { 
      $this->data['Osm']['id'] = $found['Osm']['id']; 
     } 
     return true; 
    } 

,但我收到以下錯誤:錯誤:SQLSTATE [23000]:完整性約束衝突:關鍵「PRIMARY 1062重複輸入 '60' '

我明白爲什麼我得到這個錯誤,但我似乎無法強制更新而不是插入。

+0

看起來像一個邏輯錯誤...你試圖在保存之前更改記錄ID?如果你發現另一條記錄,你不能只使用它的ID ...嘗試搜索此記錄之前運行save()方法 – 2012-02-10 05:39:58

回答

0

您必須在方法上而不是在數據中設置$id成員變量。改爲$this->id = $found['Osm']['id'];

+0

非常感謝您的建議喬布,我試過了,但記錄仍然被重複。 – 2012-02-09 23:29:15

+0

如果(isset($找到)) \t \t { \t \t \t $這 - > ID = $發現[ 'OSM'] [ 'ID']; \t \t \t echo $ this-> id; exit(); \t \t} echo語句顯示正確的ID .... – 2012-02-09 23:47:41