调试 save() 返回 false CakePHP 3.0

标签 debugging cakephp save cakephp-3.0

我有一些代码在途中的某个地方损坏了,我在调试它时遇到了麻烦。

这是它的简化版本。

$data = $this->request->data;

$form = $this->Forms->get($data['id'], [
    'contain' => ['FieldsForms' => ['data']
    ]
]);

$form = $this->Forms->patchEntity($form, $data,
    ['associated' => [
        'FieldsForms.Data',

    ]
]);

if ($this->Forms->save($form)) {
    // sunshine and rainbows
} else {
    // wailing and gnashing of teeth
}

我在没有任何错误的情况下哀号和咬牙切齿,据我所知,如果我调试 $data 看起来没问题(尽管因为它相当长并且包含一堆 UUID,所以我可能遗漏了一些东西)。

验证错误为空。

保存返回 false - 关于如何调试的任何建议都可能挽救我剩下的理智。

谢谢!

最佳答案

问题原来是数据,正如预期的那样,但无法立即看到,因为保存返回 false 并且数据非常大。

我首先制作了一个显示相同行为的问题数据子集,然后按照 ndm 的建议,将保存函数的 ORM/Table.php 代码更改如下,以便能够查看问题出在哪里:

// $entity->errors() is deprecated as of CakePHP 3.7
// $entity->getErrors() should be used in later versions
$x = $entity->errors();
if ($x) {
    debug($entity);
    debug($x);
    return false;
}

这样我就可以看到发生了什么并继续修复数据。

关于调试 save() 返回 false CakePHP 3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630880/

相关文章:

java - 仅对编辑的代码应用格式化程序 - eclipse

使用 Visual C++ Toolkit 2003 和 CodeBlocks 进行调试

debugging - Karma runner log times 是什么意思

php - CakePHP/PHP 和 MySQL 数据库架构的重复事件插件

cakephp - 在用户模型 cakephp 中获取 $this->Auth->user ('id' )

excel - 在VBA中保存Excel工作表时如何制作唯一的文件名

ios - 如何覆盖为 lldb po 命令打印的内容,以获得快速枚举?

java - 为什么 getFacesContext() 变为 null

mysql - 数据库索引 cakePHP

c++ - 如何以模块化方式保存和加载 C++ 应用程序状态