DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人のデベロッパーズブログ > 
  3. CakePHP3 のミューテータで書き換えたデータが保存されない件

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

加藤 正人

2018/10/01

CakePHP3 のミューテータで書き換えたデータが保存されない件

 

CakePHP 3.x では Virtual Field が無くなって、データの加工には読み出し用には accessor、書き込み用には mutator が用意された。

例えばフォームでは姓と名が別フィールドだがデータベースのレコードはフルネームで保存するような場合に mutator で姓フィールドと名フィールドを結合してフルネーム欄に格納するようなことができる。

ただし、ただ結合してエンティティに書き込んだだけでは変更フラグ (dirty フラグ) が設定されず、save() を実行しても保存されない。

そのような場合は当該 mutator メソッド内で setDirty() をしてやることで save() 時に正しく保存されるようになる。

関連タグ: CakePHP3  mutator  setDirty() 

関連エントリー