2016-09-26 12 views
0

が、これは更新のための私のコードです: PS:EMPIDが外部キーであるが、私はそれが理由かもはずのだと思うと、コードは、CakePHP私は更新しようとしていますが、それは新しい行を追加して

if($this->request->is('post')) 
     { 
      $this->request->data["Leave"]["empid"] = $this->request->data["id"]; 
      $this->Leave->empid = $this->request->data["Leave"]["empid"]; 
      $this->request->data["Leave"]["leave_start"] = $this->request->data["start_date"]; 
      $this->request->data["Leave"]["leave_end"] = $this->request->data["end_date"]; 
      $this->request->data["Leave"]["leave_taken"] = $this->request->data["leave_taken"]; 

      if($this->Leave->save($this->request->data['Leave'])) 
      { 
       return $this->redirect(array('action' => 'manage_leave')); 
      } 
     } 
です

//このコードは更新する代わりに新しい行を挿入していますが、新しい行に値を追加しないでください

+0

外部キーに代わって更新する場合は、saveではなくupdateAllメソッドを使用する必要があります。 プライマリキーに代わって更新する場合は、セーブデータにプライマリキーを渡す必要があります –

答えて

0

simple saveを使用して外部テーブルのデータを更新しようとしている可能性があります。外部キー

Model::updateAll(array $fields, mixed $conditions) 

ため

更新複数のレコード例

$this->Ticket->updateAll(
    array('Ticket.status' => "'closed'"), 
    array('Ticket.customer_id' => 453) 
); 

シンプルあなたのHTMLを持っていることを確認してください主キー

のために保存empid

間で
echo $this->Form->input('Leave.empid', array('type' => 'hidden')); 

保存モデル

$this->Leave->empid = $this->request->data["Leave"]["empid"]; //2 
$this->Leave->save($this->request->data); 

、あなたもsetにモデルデータを試してみて、彼らは任意の検証エラーを与えている場合$this->Leave->validates()$this->Leave->validationErrorを確認することができます。

// Create: id isn't set or is null 
$this->Recipe->create(); 
$this->Recipe->save($this->request->data); 

// Update: id is set to a numerical value 
$this->Recipe->id = 2; 
$this->Recipe->save($this->request->data); 

あなたは、これはあなたが助け:)

+0

ありがとう、その作業(y) –

+0

@AdityaManハッスルがそれを見て嬉しいです。 –

0

、ケース内を$ EMPIDがLeaveモデル(例えば葉)の対応するテーブルの主キーである場合は、単にすべてのSaving your data

希望に関する詳細な情報を見つけることができます置き換え:

$this->Leave->empid = $this->request->data["Leave"]["empid"]; 

$this->Leave->id = $this->request->data["Leave"]["empid"]; 
0では
+0

その働き、ありがとう –

関連する問題