メモです。
CakePHP 2.3.2
OrderedBehavior 2.1.2
CakePHPのモデルへの保存処理は、saveメソッドに渡すパラメータにprimary_keyが存在すれば更新、無ければ新規追加と判定されます。
このときprimary_keyが空文字でも新規追加と判定されるのですが、OrderedビヘイビアのbeforeFilterではissetでチェックしているので、空文字の場合は更新とみなされ新規のsort番号の付与処理が走りません。
久しく更新されていないようなのでOrderedBehavior.phpの該当箇所を修正してもいいかもしれませんが、もとのビヘイビアを置き換えるようなことになると困るので、以下のようにアプリケーションで対応しました。*1
if (empty($this->request->data['Model']['id'])) { // primary_keyがemptyならunsetする unset($this->request->data['Model']['id']); }
- とはいえ、確かCakePHP2系で使うためや、複数のforeign_keyに対応するために元のファイルをいじることもあるけど。 [↩]