[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




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

前の記事:

次の記事:

【二種免許】深視力検査合格のコツや裏技
【二種免許】深視力検査合格のコツや裏技

東京では免許更新の際、ゴールド免許の方や島嶼にお住まいの方以外は、鮫洲...

no image
[cakephp4] dirtyとoriginal

patchEntityすると、変更したところと、変更前の内容が取れる。...

BaserTestCaseで特定プラグインの有無でfixturesを振り分ける
BaserTestCaseで特定プラグインの有無でfixturesを振り分ける

baserCMSのTestCaseで、特定のプラグインの有無を調べて、...

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

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

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

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

→もっと見る

PAGE TOP ↑