【问题标题】:cant find the error on save record in Cakephp4在 Cakephp 4 中找不到保存记录的错误
【发布时间】:2021-02-05 01:38:44
【问题描述】:

我正在尝试从 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

【问题讨论】:

  • 您是否尝试过为您的代码编写单元测试?
  • 烘焙模型后请重试,./cake bake model Tutors -f

标签: cakephp cakephp-4.x


【解决方案1】:

我至少会将保存的内容移到表格中并将其包装在 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
        );
    }
}

别忘了包括:使用 Cake\Log\Log;

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

【讨论】:

    【解决方案2】:

    我更改了保存时的返回值,可以测试错误

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

    我会在 NewTutor 中出错

    【讨论】:

    • 这是你的答案吗?
    • 如果您不喜欢这个答案,请自己添加一个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多