こんにちは!! ふうがと言います!プログラミング勉強中の犬です。
##今回の内容
cakePHP2系の勉強時に、saveができない問題に直面しました。
シチュエーションと対策を記載します。
##ご覧頂く前に
著者の備忘録ともなっておりますので言葉足らずな部分もございます。
ご容赦いただければと思います。
##公式サイト(ご参考までに)
🌟公式
https://cakephp.org/
⭐️ブログチュートリアル
https://book.cakephp.org/2/ja/tutorials-and-examples/blog/blog.html
##試してみたこと
✅validateの確認
cakePHPはViewでカラムを指定していても、指定していないカラムのvalidateがかかっている時があります。
例)emailとpasswordを登録したいのに、nameのvalidateがかかっているような感じです。
・エラーが出ていない
・DBを確認してもsaveができていない状態
・誤字などはない。var_dumpでも値はきちんと入っている。
上記のようなパターンの時にはデバック機能を使って確認してみましょう!
$this->User->save($this->request->data);
debug($this->User->validationErrors);
上記のように記載すると、、、
⭐️エラーがあった場合
array(
'name' => array(
(int) 0 => '名前が設定されていません'
)
)
⭐️エラーが無かった場合
array()
上記ブラウザにが表示されます。
##対策
①unsetでvalidateがかからないようにする。
//nameのvalidateを無視する
unset($this->User->validate['name']);
$this->User->save($this->request->data);
②第二引数でfalseを入れる。
こちらはname以外のvalidateもかからなくなるので、開発段階で使用されるのがいいかと思います。
$this->User->save($this->request->data, false);
##最後に
少しでも皆様の悩ましいエラーが解決できますように。