-1

我正在研究 cakephp 2.x,如果用户 ID 不存在于数据库中,我想创建一个新行或记录,否则更新记录,但问题是:它没有更新当前记录。它正在使用用户标识“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";
    }



}
4

1 回答 1

0

似乎 idUser 字段不是自动增量的,在cakePHP 文档中

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

除了使用自动增量键作为主键,您还可以使用 char(36)。每当您使用 Model::save 方法保存新记录时,Cake 将使用唯一的 36 字符 uuid (String::uuid)。

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

于 2013-08-23T16:15:10.997 回答