Model_Softクラスを使って論理削除を実装したときに少しハマったのでメモ。
Relationの設定がkey_fromがhoge_id、key_toが主キーとなっているモデルでdeleteメソッドを実行すると
Primary key on model (モデル名) cannot be changed deleteというエラーが出た。
FuelPHPのドキュメントを参照しても以下の文章しかなく、手詰まりだった。
delete メソッドは、 cascade_delete が true である関係を持ったモデルも論理削除します。その関係モデルが論理削除モデルでなかった場合は、 RelationNotSoft 例外が投げられます。
勿論、cascade_delete=>falseにしてもエラーは解消されない。
いろいろググった結果、Relationの設定がhas_oneだったのが原因らしい。
belongs_toにしたら無事動いた。