レコードを削除するときは、条件が true か false かをテストして、その結果に基づいて削除を続行するか、そこから復帰します。
問題は、「return false」が deleteAll を完全に停止することです。私の理解では、deleteAll は単に次のレコードに移動するだけでした。
これはバグですか、それとも何か不足していますか?
レコードを削除するときは、条件が true か false かをテストして、その結果に基づいて削除を続行するか、そこから復帰します。
問題は、「return false」が deleteAll を完全に停止することです。私の理解では、deleteAll は単に次のレコードに移動するだけでした。
これはバグですか、それとも何か不足していますか?
このbeforeDelete
メソッドを使用すると、何かがおかしいと思われる場合に削除操作を中止できます。false を返すことで、アクションを中止します。この場合、deleteAll アクションは、すべての削除を中止することを意味します。あなたが探している可能性が高いのは、次のような foreach ループでの削除です。
// $data would be the resultset of the rows you want to delete
foreach($data as $row) {
$this->Model->delete($row['Model']['id']);
}
このようにして、beforeDelete
が各行に対して個別に呼び出され、「有効な」行を削除し、「無効な」行を保持できるようになります。