July 28, 2012

FuelPHPのORMの$_propertiesでform設定と除外フィールド。その2。



以前、以下の記事を書きました。

FuelPHPのORMの$_propertiesでform設定と除外フィールド。
http://madroom-project.blogspot.jp/2012/07/fuelphpormpropertiesform.html

この方法、以下の問題が発生しましした。
(1) モデルの$_propertiesにvalidationを定義。
(2) $_observersにOrm\Observer_Validationを設定、before_saveで自動実行。
(3) (2)のタイミングで、skip設定したカラムのvalueが消えてしまう。

結果として、例えばskip設定したカラムのvalueが整数型だった場合、
値が飛ぶことにより0がinsertされてしまう。
(結果はMySQLの設定等で異なると思います。)

解決策は、$_propertiesの該当フィールドに対して、
skip設定を使わず、typeにfalseを設定することです。
--
'form' => array('type' => false),
--

参考:
http://docs.fuelphp.com/packages/orm/creating_models.html


P.S.
skip設定は、入力項目上は必要だけどDBには保存しない項目。
という認識でOKなのだろうか。
ボケてました。skip設定したら入力項目に出て来ませんね。

No comments:

Post a Comment