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

何をしているかわからない。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()と、保存する前にデータの検証も試行されるため、手動で検証する必要はありません。

于 2013-10-02T15:37:06.583 に答える
0

追加$this->Model->validationErrors;は常にトリックを行います。

于 2014-08-30T05:59:02.573 に答える