3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHPでsaveができない時に確認すること

Last updated at Posted at 2020-10-18

こんにちは!! ふうがと言います!プログラミング勉強中の犬です。
##今回の内容
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でも値はきちんと入っている。
上記のようなパターンの時にはデバック機能を使って確認してみましょう!

/app/Controller/hogehogeController.php
$this->User->save($this->request->data);
debug($this->User->validationErrors);

上記のように記載すると、、、

⭐️エラーがあった場合

array(
    'name' => array(
        (int) 0 => '名前が設定されていません'
    )
)

⭐️エラーが無かった場合

array()

上記ブラウザにが表示されます。

##対策
①unsetでvalidateがかからないようにする。

/app/Controller/hogehogeController.php
//nameのvalidateを無視する
unset($this->User->validate['name']);
$this->User->save($this->request->data);

②第二引数でfalseを入れる。
こちらはname以外のvalidateもかからなくなるので、開発段階で使用されるのがいいかと思います。

/app/Controller/hogehogeController.php

$this->User->save($this->request->data, false);

##最後に
少しでも皆様の悩ましいエラーが解決できますように。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?