これは悩みました。
例えばCakePHPのサイトのように、RecipeとTagとが多対多の関係でhasAndBelongsToMany(HABTM)で定義されているとき、レシピに複数のタグを追加するには、Recipeモデルで
$data['Tag’] = array(1,2);
$this->create();
$this->saveAll($data);
なんてすればいいのですが、その関係を削除したいことがあります。単純に
$data['Tag’] = array();
$this->create();
$this->saveAll($data);
とすると、全くTagには影響はありませんでした。ではどうすればいいかというと、正解はこのサイト(Thanks!)。
array()をarray(false)にすればいいのですね。
$data['Tag’] = array(false);
$this->create();
$this->saveAll($data);
これはわかりませんでした。でも、何かおかしな仕様ですが、しかたありません。
関連記事:
- CakePHP 日付の月の選択フォーマットの指定。月を英文から数字で表示する。
- CakePHP URLの指定 - 例えば、htmlヘルパーのlinkのパラメータ
- CakePHP:paginateのsortに複数のソート項目を追加する。
- Windowsフォトギャラリーでファックス画像を印刷するとおかしい
- capictchaの画像のサイト名を消してしまう
関連記事はYARPP関連記事プラグインによって表示されています。



こんにちは。リンク元の主です。
やはり同じ悩みに至る方がいらっしゃるんですね
私がハマった時は検索しても目ぼしい情報が無かったので、
思いつきでfalseをいれてみたんです
変な実装ですよね
もしかしたらfalseで消えるのがバグかもしれないですね(笑)
[...] This post was mentioned on Twitter by 安藤 宗則/mune ando, gadget. gadget said: #CakePHPのhasAndBelongsToMany(HABTM)で、2つのテーブルの関係を削除したい。: これは悩みました。例えばCakePHPのサイトのよう [...]
sakanaさん
コメントありがとうございます。今回は、とても助かりました。この情報が見つからなかったら、無理矢理SQLを発行してしまおうと思っていました。
そうなんですよ。検索してみると、意外とみなさん削除することはしないので考えていないかと。
でも、何も関係はそのままというほうが多いので、こんな仕様になっているのと納得していますが。
将来、仕様が変わらないことを望みます。