2012-06-04 68 views
0

我想讓cakePHP更新數據庫中的一條記錄,並創建一個新的記錄。我的腳本用「FIRST」進行檢查,如果它不返回false,它應該創建一個新記錄,否則它應該根據我指定的ID更新現有的記錄。我在下面有意添加了$ this-> Asset-> id = 62;嘗試強制更新,但不起作用。任何幫助? (另外,如果你能明白它該做的,請隨時引導我,也許是更好的代碼:)很新的蛋糕:cakePHP沒有更新記錄

public function index() { 

     if($this->request->is("post")) { 
      $aid = $this->request->data['Asset']['asset_identifier']; 
      $type = $this->request->data['Asset']['asset_type_id']; 
      $asset = $this->Asset->find("first",array("fields" => array("Asset.id", "Asset.user_id", "Asset.status_id", "Asset.financial_id", "Asset.insurance_id"),"conditions" => array("Asset.asset_identifier" => $aid, "Asset.asset_type_id" => $type))); 
      if($asset != false) { 
       $uid = $this->Auth->user("id"); 
       // UPDATE, depends on info: 
       $this->Asset->id = $asset['Asset']['id']; 
       foreach(array("financial_id", "insurance_id", "user_id") as $value) { 
        if($asset['Asset'][$value] != 0) { 
         $emails[] = $asset['Asset'][$value]; 
        } 
       } 
       if(isset($emails) && count($emails)) { 
        $this->request->data['Asset']['status_id'] = 1; 
        $email = new CakeEmail(); 
        $email->from(array('[email protected]' => 'Assetchase.co.za')); 
        $email->subject('Assetchase.co.za result notification.'); 
        foreach($emails as $value) { 
         $user = $this->User->find("first",array("fields" => array("username"),"conditions" => array("id" => $value))); 
         $email->to($user['User']['username']); 
         $email->send('A new notification, booyah!'); 
         // Send an email with the username. 
        } 
       } 
       if($this->Auth->user("user_type_id") == 2) { 
        $this->request->data['Asset']['user_id'] = $uid; 
       } elseif($this->Auth->user("user_type_id") == 3) { 
        $this->request->data['Asset']['financial_id'] = $uid; 
       } elseif($this->Auth->user("user_type_id") == 4) { 
        $this->request->data['Asset']['insurance_id'] = $uid; 
       } 
      } 
      $this->Asset->id = 62; 
      if($this->Asset->saveAll($this->request->data)) { 
       $this->Session->setFlash("A new asset has been loaded",'success'); 
       $this->redirect(array("controller" => "asset", "action" => "thankyou", "guest")); 
      } else { 
       $this->Session->setFlash('An error has occured.','default',array('class'=>'error')); 
      } 
     } 
     $assetTypes = $this->Asset->AssetType->find('list'); 
     $this->set("assetTypes", $assetTypes); 

    } 

回答

0

當你調用$this->Asset->saveAll($this->request->data)你告訴蛋糕採取POST數據並嘗試保存它。它沒有看到$this->Asset,你完全可以將ID設置爲62。您可以通過檢查var_dump($this->request->data)的輸出來驗證。改爲嘗試類似$this->request->data['Asset']['id'] = 62