39

私のデバッグ値は に設定されて2おり、必要なものを除いてすべてのクエリが表示されています。

モデルItemsでこのメソッドを呼び出すコントローラーメソッドがあります( Item belongsTo User ):User

function add_basic($email, $password) {
    $this->create();

    $this->set(array(
        'email' => $email,
        'password' => $password
    ));

    if($this->save()) {
        return $this->id;
    }
    else {
        return false;
    }
}

$email$passwordが関数に正しく渡されている (そして正当なデータが入力されている)ことを確認しました。emailおよびは、モデルpassword内のフィールドの名前です。User

$this->save()が返されていることも確認しましたfalseが、これが発生したページを表示すると、クエリがデバッグで出力されておらず、エラーがスローされていないため、何が問題なのかわかりません。

エラーを確認する方法、またはクエリが実行されていないように見える理由についてのアイデアはありますか?

奇妙なことに、この直後に、まったく同じ方法でデータを保存する別のモデルがあり、問題なく終了します。

4

7 に答える 7

45

これにより、おそらく必要な情報が得られます(もちろん、無効なデータのために保存されていないと仮定します):

if(!$this->save()){
    debug($this->validationErrors); die();
}
于 2010-02-22T22:45:44.717 に答える
10

モデルまたはアプリ モデルにbeforeValidate()orメソッドがありますか? beforeSave()もしそうなら、彼らは真を返していますか?それができない場合は、デバッガーを使用して、IDE の Cake/libs/models/model.phpsave()メソッドの先頭にブレークポイントを設定し、false が返されるまでコードをステップスルーします。die('here');コールの追加に失敗しました。

于 2010-02-23T20:54:27.757 に答える
8

これを試して:

if ($this->save()) {
    return $this->id;
}
else {
    var_dump($this->invalidFields());
    return false;
}
于 2010-02-22T22:13:35.550 に答える
3

テーブルを確認してください。

  • ID自動インクリメントが有効になっていますか?
  • id主キーですか?

auto_increment の問題が私を殺しました。簡単な確認方法: ID = 0 の行がある場合、auto_increment が無効になっている可能性があります。

于 2014-04-02T13:45:58.377 に答える