0

当模型没有保存或返回任何类型的错误时该怎么办?

$data = array(
    'Model' => array(
        'field1' => 'value1',
        'field2' => 'value2',
    )
);

try {
    // Forget to add this
    $this->Model->set($data);

    if (!$this->Model->validates()) { // Returns true
        throw new GenericErrorException("Can't validate");
    }

    $this->Model->create();
    if (!$this->Model->save($data)) { // Returns false
        debug($this->Model->invalidFields()); // Empty array
        debug($this->Model->getDatasource()->getLog()); // Returns array without INSERT/UPDATE

        throw new GenericErrorException("Can't save");
    }
} catch(Exception $e) {
    // LOG ERROR
}

我能做些什么来验证发生了什么错误吗?

4

2 回答 2

0

我不确定你在做什么。您应该将数据保存为POSTorPUT请求的结果:

public function add() {
    if ($this->request->is('post')) {
        if ($this->Model->save($this->request->data)) {
            // model saved; set flash message and redirect
        }
        else {
            // save failed; errors in $this->Model->validationErrors
        }
    }
}

如果您遵循 CakePHP 的约定,您将获得更流畅的体验。调用save()您的模型也将尝试在保存之前验证您的数据,因此无需手动验证。

于 2013-10-02T15:37:06.583 回答
0

添加$this->Model->validationErrors;总是做的伎俩。

于 2014-08-30T05:59:02.573 回答