在一个函数中添加或更新记录

时间:2015-03-10 14:14:24

标签: cakephp cakephp-2.3

在此功能中,我想看看是否已经注册了具有此类电子邮件的用户,如果是,则必须更新字段,否则必须创建新用户。 我试图以下面的方式实现它,但这不起作用。

public function facebook_add(){

        if ($this->request->is('post')) {

        $User_data = array('User'=>$this->request->data);

        $this->User->email = $User_data['User']['email'];

        if($this->User->exists()){         
                     if($this->User->save($User_data)){ 
                    $message='1';   
                     }else{
                      $errors = $this->User->invalidFields(); 
                       $user_error=array_shift(array_slice($errors, 0, 1));                                   
                       $message= array_shift(array_slice($user_error, 0, 1));
                    }    
        }else{
               if($this->User->save($User_data)){   
                    $message='1';   
                     }else{  
                      $errors = $this->User->invalidFields(); 

                       $user_error=array_shift(array_slice($errors, 0, 1));                                   
                       $message= array_shift(array_slice($user_error, 0, 1));

                    }  
        }
                    $this->set(array(
        'message' => $message,
        '_serialize' => array('message')
    ));                                                 
}      
}

如果找不到用户,则问题是启动新的用户对象。我们非常感谢您提供帮助。

1 个答案:

答案 0 :(得分:1)

正如我在评论中所说,当您需要创建new记录时,您应该在$this->User->create()之前调用$this->User->save($User_data),以便您保存的数据已经初始化。