在 Cakephp4

问题描述

我正在尝试从 cakePHP4 中的表单数据中保存一条新记录。此代码在 cakePHP3.2 中有效并且已更新但不起作用。我的问题是我得到的只是假的?当我尝试保存 .我在 $tutor 上尝试了 getErrors,但也无法识别。如何找出错误所在?

    $tutor = $this->Tutors->newEmptyEntity();
            $tutor = $this->Tutors->patchEntity($tutor,$saveData,[
                    'associated' => [
                            'AvailabilityForTutors'=>["validate"=>false],'AvailabilityForAssessments'=>["validate"=>false],'Subjects'=>["validate"=>false]
                    ],"validate"=>false
                ]);
            
            // debug($tutor);
              
            $tutor = $this->Tutors->save($tutor,[
                'validate' => false,'associated' => [
                    'AvailabilityForTutors','AvailabilityForAssessments','Subjects'
                ]
            ]);
        
             debug($tutor);//returns false? this doesnt tell me anything

 https://book.cakePHP.org/4/en/orm/saving-data.html

解决方法

我至少会将保存内容移到表格中并将其包装在 if/else 中以检查保存是否确实发生,如果没有正确记录并返回错误。要获取错误,请将保存更改为以下代码:

if ($this->Tutors->save($tutor,[
    'validate' => false,'associated' => [
            'AvailabilityForTutors','AvailabilityForAssessments','Subjects'
         ]
])){
    return $tutor;
} else {
Log::write(
    'emergency','Unable to store tutor'
    );
    foreach ($tutor->getErrors() as $errorKey => $errorValue){
        Log::write(
            'emergency','Error with field '.$errorKey
        );
    }
}

不要忘记包含:use Cake\Log\Log;

运行代码并检查日志文件夹中的日志

,

我在保存时更改了返回值并且可以测试错误

$result = $this->Tutors->save($NewTutor,[

我可以在 NewTutor 中出错

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...