2016-09-26 65 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

如果您代表外鍵進行更新,那麼您需要使用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); 

你可以找到所有Saving your data

希望更多的信息,這可以幫助你:)

+0

感謝用戶,其工作(y) –

+0

@AdityaManhas很高興看到,如果它幫助你,然後接受答案。 –

0

而且萬一要是$ EMPID是離開模型的相應表的主鍵(如葉),只是更換:

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

通過

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

其工作,謝謝 –

相關問題