CakePHP 全ての関連モデルに対してunbindModelする

PHP

CakePHP 2.x以前では、unbindModelでは個別に関連を指定する必要があって煩雑になることが多いので、例外指定した関連以外の全モデルの関連を外すメソッドを作りました。

 class AppModel extends Model {
 	public function unbindAllBut($params = array(), $reset = true) {
 		foreach(array('hasOne', 'hasMany', 'belongsTo', 'hasAndBelongsToMany') as $association){
 			if(!empty($this->{$association})) {
 				$unbind = array_keys($this->{$association});
 				
 				if(array_key_exists($association, $params)) {
 					$unbind = array_diff($unbind, $params[$association]);
 				}
 				
 				$this->unbindModel(array($association => $unbind), $reset);
 			}
 		}
 	}							
 }
カテゴリーPHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です