当模型没有保存或返回任何类型的错误时该怎么办?
$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
}
我能做些什么来验证发生了什么错误?
答案 0 :(得分:0)
我不确定你在做什么。您应该根据POST
或PUT
请求保存数据:
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()
也会尝试在保存之前验证您的数据,因此无需手动验证。
答案 1 :(得分:0)
添加$this->Model->validationErrors;
总是做一些技巧。