2013-08-23 35 views
-1

我正在CakePHP 2.x上工作,如果用戶標識不存在於數據庫中,我想創建一個新行或記錄,否則更新記錄,但問題是:它沒有更新當前記錄。它用userid「0」創建記錄我不知道問題是什麼。如果沒有找到記錄,它應該創建一個記錄,其中包含我正在提供的用戶標識。如果ID不在db中創建新記錄

public function activeNoStatus(){ 


    $this->loadModel('Status'); 
    $userid = $this->request->data('idUser'); 
    $notify = $this->request->data('notify'); 

    $data = array(); 
    $data['activeNo'] = $notify; 




    $count = $this->Status->findUserId($userid); 
    if($count>0){ 
     $this->Status->id = $userid; 
     $this->Status->save($data); 


     echo "update"; 
    }else{ 
      //create new row 
      $datanew=array(); 
     $this->Status->id = $userid; 
     $this->request->data['Status']['activeNo']=$notify; 

      $this->Status->save($this->request->data); 
      echo "ok"; 
    } 



} 
+1

如果你想創建一個新的記錄,重要的'$ this-> Status-> create()'在哪裏? – mark

+0

ohh我錯過了這裏whil; e張貼..沒有它的工作..它正在用idUser創造記錄....並且我確實讓你知道我的idUser是主鍵不是自動增加 – hellosheikh

+0

非常感謝你解決我的問題......我錯過了那一行 – hellosheikh

回答

0

似乎ID用戶字段沒有自動增量,在cakePHP documentaion

與CakePHP的模型互動(與 連接表除外),需要有一個主鍵來唯一地標識每個所有表 行。如果您希望建模沒有單字段 主鍵的表,CakePHP的慣例是將單字段主鍵 添加到表中。如果您想要使用該表格的模型,則必須添加單字段主鍵。

而不是使用自動遞增密鑰作爲主鍵,您可能也使用char(36)作爲 。每當使用Model :: save 方法保存新記錄時,Cake將使用唯一的36個字符uuid (String :: uuid)。

所以你應該使idUser自動增量主鍵。

相關問題