如果id不在db中,则创建新记录

时间:2013-08-23 15:56:40

标签: cakephp cakephp-2.0 cakephp-2.1

我正在开发一个cakephp 2.x,我想创建一个新的行或记录,如果dbid中没有userid,否则更新记录,但问题是:它没有更新当前记录。用userid“0”创建记录我不知道问题是什么。如果没有找到记录,它应该使用我提供的用户ID创建记录。

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 个答案:

答案 0 :(得分:0)

似乎idUser字段不是自动增量,在cakePHP documentaion

  

CakePHP模型与之交互的所有表(除了   连接表),需要一个单一的主键来唯一标识每个   行。如果您希望为没有单字段的表建模   主键,CakePHP的约定是单字段主键   被添加到表中。您必须添加单字段主键if   你想使用该表的模型。

     

您可以使用自动增量键作为主键,而不是使用自动增量键   也使用char(36)。然后,蛋糕将使用一个独特的36个字符uuid   (String :: uuid)每当使用Model :: save保存新记录时   方法

所以你应该使用idUser自动增量主键。