cakephpで物理削除時はdeleteかdeleteAllを使う
いっつも忘れて以前のソースを探す時間を毎回ムダにするのでまとめておく。
<?php // deleteの場合 $id = 1; if ($this->Model->delete($id)) { // 成功 } // deleteAllの場合 $param = array('xxx_id' => $id); if ($this->Model->deleteAll($param)) { // 成功 }
テーブルのidを指定して削除するときは、deleteを使い、別のカラムを指定したい場合は、deleteAllを使う。
注意事項として、データが存在しなかった場合falseを返すので、データの有無によらずdeleteを実行したい場合は、エラーをチェックをしないようにする。(もちろんDBエラーも検出できなくなるのでケースバイケース)
deleteAllを実行した際の挙動について
$paramの条件でテーブルを一度selectする
selectの結果がなければ、falseを返して終了
結果があれば、マッチしたデータに対してdeleteをかける
trueを返して終了