9
7

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 5 years have passed since last update.

Phalcon Model->save() が成功したのにDBが更新されない件

Posted at

現象

以下のようにしてDB へのデータ格納を Model->save() で行ったところ、

if (!$model->save()) {
  // 失敗
}
// 成功

戻り値的には成功となったにもかかわらず、DB を覗いてみるとデータが入っていない、という現象に出くわしたので、その原因と対応方法。

原因

Phalcon のデフォルト動作では Model のフィールドが null でないかを自動的にバリデーションする機構が有効になっているようです。
このため、 Model の全てのフィールドに null 以外の何らかの値が入っていないと、このバリデーションに引っかかってしまいます。
このとき、戻り値は false になってほしいところですが、 true が返ってくるようです。
Phalcon 的には Validation Failed Events で対応するのが流儀なのでしょうか。。
これでは、更新する値が null でかまわなかったりする場合に困ります。

対応方法

以下のような設定をしておくことで、Model のフィールドが null でないかを自動的にバリデーションする機構を無効にできます。
simple 型のプロジェクトならservices.php あたりに書くのがよいのではないかと思います。

\Phalcon\Mvc\Model::setup([
    'notNullValidations' => false
]);

参考

Working with Models - Disabling/Enabling Features

9
7
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
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?