2012-02-09 12 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()メソッドを実行する前にこのレコードを検索してください –

答えて

0

データの代わりにメソッドのメンバー変数$idを設定する必要があります。代わりに$this->id = $found['Osm']['id'];してください。

+0

助けてくれてありがとうJoeb、私は試みましたが、レコードはまだ複製されています。 –

+0

見出さ(ISSET($見出さ)) \t \t { \t \t \tの$ this - > ID = $ [ 'OSM'] [ 'ID']であれば、 \t \t \t echo $ this-> id; exit(); \t \t} echo文が正しいIDを示しています.... –

関連する問題