问题描述
我正在尝试从 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 中出错