cakephp:无保存、无验证错误、无回调、空sql日志

cakephp:无保存、无验证错误、无回调、空sql日志,cakephp,model,save,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-

在我的控制器中,我有以下添加功能:

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。正如你所看到的,我已经尝试了很多,以找出错误的地方,但没有运气

此外,我的模型中没有任何回调(保存前、保存后…)

有人知道发生了什么吗?

你的

if ($this->Paciente->validates()) {
        if($this->Paciente->save()) {
}
这是错误的。 您验证了两次

请-如文件所述-使用false(
save(null,false)
)以避免两次失效,或者仅删除此处的validates()部分。 您可以直接执行以下操作:

if ($this->Paciente->save($this->request->data)) {}
不过,这本身不太可能导致您的问题。 或者您是否有一些自定义的验证规则,在第二个(错误的)触发器上会使字段无效?
您可以通过检查
$this->Paciente->validationErrors
来确认这一点。它应该是空的。如果它没有保存(并且肯定没有回调),并且如果它没有由于SQL错误引发异常,那么很可能是您的验证规则。

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

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


感谢@mark、@AD7six、@liyakat和@Alex在这个问题上的帮助。

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

您禁用了布局。你需要什么?只需删除该行并重试。您的调试级别是否为2?日志记录说明了什么?我建议您只需调试save方法并确定它返回false的位置—基于此,您的模型验证但不保存的方式应该更清晰。虽然在保存之前调用validate是不必要的—删除对validates的调用不会改变调用save的方式—它不会解决存储中的问题这个问题-1如果存在回调,则可能会发生。从问题来看,情况并非如此。因此,不,这确实不太可能是问题本身,但它仍然需要指出——并使代码本身复杂化/膨胀。AppModel中可能会有回调?在某些情况下,在保存之前必须返回false才能运行到101案例中。