cakephp3のnotEmptyの罠

先日cakephp3のvalidationのひとつ、notEmptyではまったので書き留めておく。

notEmptyは空のフィールドを認めないが、フィールドが存在しないことは認めてしまうようだ。

結果としてバリデーションが効かず、DB上で空のフィールドが発生することがある。

例えば以下のような場合。





$entityのtitleのメンバは空ではない(そもそも存在しない)のでバリデーションに引っかからない。

このままsaveすると保存されてしまう。

これを防ぎたい場合、別にフィールドが存在しないことを認めないrequirePresenceをつけてやる必要がある。

これならtitleが存在しない場合もバリデーションが機能する。







ただし、requirePresenceは$dataに相当する部分をチェックしているらしい。

カラムを更新したい場合は気を付けなければならない。

以下のようなものは引っかかるのでダメ。


こうすれば解決する。

おわり

この記事を書いた人

アバター

宮川

最近の業務は主に化石調査や遺跡修繕

最新の建築基準に合わせて竪穴式住居を改築するなど