updateAll時のアソシエーションを解除

環境はCakePHP1.2 RC3です。

「updateAllで一気に複数レコードのUpdate」
http://d.hatena.ne.jp/cakephper/20081114/1226656901
で書いたように、updateAllを使えば一気に条件にマッチしたレコードをUpdateできます。

ただ、モデルにbelongsToなどのアソシエーションがあった場合、

$this->Model->recursive = -1;

のようにしても、update時のSQLにjoinが入ってしまいます。


update時にアソシエーションを解除する場合は、unbindModelメソッドで解除したいアソシエーションをセットして解除します。例えばbelongsToを解除する場合は、

$this->Model->unbindModel( array( 'belongsTo' => array_keys( $this->Model->belongsTo ) ) );

とすれば解除され、その後updateAllすればjoinは発生しません。