我正在开发一个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";
}
}
答案 0 :(得分:0)
似乎idUser字段不是自动增量,在cakePHP documentaion:
CakePHP模型与之交互的所有表(除了 连接表),需要一个单一的主键来唯一标识每个 行。如果您希望为没有单字段的表建模 主键,CakePHP的约定是单字段主键 被添加到表中。您必须添加单字段主键if 你想使用该表的模型。
您可以使用自动增量键作为主键,而不是使用自动增量键 也使用char(36)。然后,蛋糕将使用一个独特的36个字符uuid (String :: uuid)每当使用Model :: save保存新记录时 方法
所以你应该使用idUser自动增量主键。