プログラミングメモ

主にWeb(PHP, JavaScript, etc.)関連のプログラミングメモをしていきます。

指定されたアソシエーション以外を削除するunbindModelExcept()

下記をapp/Model/AppModel.phpに追加。

	public function unbindModelExcept($params, $reset = true) {
		$unbind = array();
		$assocs = $this->associations();
		foreach ($assocs as $assoc) {
			if (in_array($assoc, $params, true)) {
				continue;
			}

			foreach (array_keys($this->{$assoc}) as $model) {
				if (!isset($params[$assoc]) || !in_array($model, $params[$assoc])) {
					$unbind[$assoc][] = $model;
				}
			}
		}

		$this->unbindModel($unbind, $reset);
	}