シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]Orderedビヘイビアでprimary_keyを空文字で渡すとsort番号を振らない

メモです。

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']);
}
  1. とはいえ、確かCakePHP2系で使うためや、複数のforeign_keyに対応するために元のファイルをいじることもあるけど。 []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする