2012-02-09 91 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