cakephpで関連するテーブルを連鎖的にデータ削除する方法
概要
cakephp2系でデータベースからデータを削除するにはdelete関数を呼び出す。
もしテーブル間でアソシエーションが設定されていて、自分自身を参照するレコードがある場合はそのレコードも連鎖的に削除することができる。その設定方法です。
手順
modelの設定を編集する。例えば「app/Model/Urikake.php」など。
[dependent]はデフォルトでfalseなので、これをtrueにする。
public $hasMany = array( 'Urikake' => array( 'className' => 'Urikake', 'foreignKey' => 'customer_id', 'dependent' => true, 'conditions' => '', 'fields' => '', 'order' => '', 'limit' => '', 'offset' => '', 'exclusive' => '', 'finderQuery' => '', 'counterQuery' => '' ) );
この設定がない場合はcake bakeコマンドまたは手動でテーブル間のリレーションを設定しておく。