cakephp:没有保存,没有验证错误,没有回调,空的sql日志

时间:2013-07-13 01:59:53

标签: cakephp model save

在我的控制器中,我有这个添加功能:

public function add(){
    $this->layout = false;
    if($this->request->is('post')){
        $this->Paciente->create(); 
        $this->Paciente->set($this->request->data);
        if ($this->Paciente->validates()) {
            if($this->Paciente->save()){
                 $this->set('status', '200');
            } else {
             //   debug($this->Paciente->validationErrors);
             //   ini_set('memory_limit', '-1');
         //       var_dump($this->Paciente);

                $this->set('status', '101');
            //    $log = $this->Paciente->getDataSource()->getLog(false, false);
          //      debug($log);

               // die;
             }
        } else {
            // didn't validate logic
   //         $errors = $this->Paciente->validationErrors;
     //       debug($errors);
            $this->set('status', '100');

        }

    } else

     $this->set('status', '404');

}

我正在发送帖子信息,状态总是101.如你所见,我已经尝试了很多,以找出错误的位置,但没有运气。

此外,我的模型中没有任何回调(beforeSave,afterSave ...)......

任何人都知道发生了什么事?

3 个答案:

答案 0 :(得分:0)

if ($this->Paciente->validates()) {
        if($this->Paciente->save()) {
}

错了。 你要验证两次。

请 - 如文档所示 - 使用false(save(null, false))不要使两次无效或只是删除validates()部分。 你可以直接做:

if ($this->Paciente->save($this->request->data)) {}

但这本身不太可能导致您的问题。 或者你有一些自定义验证规则,在第二个(和错误的)触发器将使一个字段无效? 您可以通过之后检查$this->Paciente->validationErrors来确认。它应该是空的。如果它没有保存(并且肯定没有回调),并且如果由于SQL错误而没有抛出异常,则很可能是您的验证规则。

答案 1 :(得分:0)

问题在于我发送帖子信息的方式:

我将变量设置为数据['Model'] ['var'],正确的方法是数据[Model] [var]

感谢@mark,@ AD7six,@ liyakat和@Alex帮助您解决问题。

答案 2 :(得分:0)

我无法想象。当您设置上面的数组值时,它可能会在php5.3>

中中断