[cakephp] saveできない時のチェックリスト

2015/04/01 | 開発記録 | hideichi

save されない、
update できない、
などなど、「あれ?」という時にチェックする一覧を作ってみました。

1、$this->data に値が入っていない
初歩ですね。var_dumpでチェック。

2、validate に弾かれている。
save の第2引数に falseを入れるとvalidateを無視できるらしいので、試しにやってみる。

$this->save($data, false)

3、whitelist が設定されている。
設定されているフィールドだけ更新するというものらしい。
これが設定されている場合、入っていないと更新されない。

4、キャッシュが残っている。
フィールド名を変えたりした場合なんかは特に、キャッシュを削除しないと更新されない。
/tmp/cache/models
この中身を消す。

5、saveで上書きしている。
一つの処理に二つ以上のsaveがあって、後のsaveで前のsaveを上書きしている。
saveの第3引数に、更新するフィールドを明示することで回避できる。

$this->id = $id;
$fields = array('name');
$this->save($data, false, $fields);

今回は5にやられた。
まあ、コードは見通しよく、綺麗に書きなさい。
っていう事なんだろうけどさ!

6、trueとfalseが逆

try{
 if($this->save($data)) throw new Exception();
}catch(){}

try文でよくこんな書き方してませんか?
ビックリマーク付けないとエラーになりますよ。
正解

if(!$this->save($data)) throw new Exception();

2019年2月13日更新
4年経ってもまだsaveで躓くんです。

前の記事:

次の記事:

2015/04/01 | 開発記録

コメント/トラックバック

トラックバック用URL:

この投稿のコメント・トラックバックRSS




管理人にのみ公開されます

前の記事:

次の記事:

kusanagi で letsencryptが更新されない
kusanagi で letsencryptが更新されない

結論から、アパッチを直接再起動すると直るかも。 systemctl r...

baserCMS プラグインのアップデートスクリプト
baserCMS プラグインのアップデートスクリプト

(参考) http://project.e-catchup.jp/pr...

kusanagi,baserCMSのドメイン変更手順
kusanagi,baserCMSのドメイン変更手順

baserCMSって書いたけど、cakephp2系も同じだと思う。 s...

baserCMS プラグイン・テーマの仕上げ作業
baserCMS プラグイン・テーマの仕上げ作業

プラグインとかテーマとか作って、 あーできたー、の後に最後にやる仕上げ...

no image
love-beer

諸君、私はビールが好きだ 諸君、私はビールが好きだ 諸君、私はビールが...

→もっと見る

PAGE TOP ↑