CakePHP3のレコード削除方法まとめ(delete・deleteAll)。
目次
・ delete(更新対象: 1レコード)
・ deleteAll(更新対象: 条件一致レコード)
● 使用例のテーブル定義(usersテーブル)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // ユーザーテーブル // status 0:仮登録 1:本登録 2:退会 CREATE TABLE `users` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `email` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, `status` char(1) DEFAULT 0, `created` DATETIME DEFAULT NULL, `modified` DATETIME DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; // テストデータ INSERT INTO `users` (`id`, `email`, `password`, `status`, `created`, `modified`) VALUES (NULL, '001@cakephp3.com', '001', '0', NULL, NULL), (NULL, '002@cakephp3.com', '002', '1', NULL, NULL); |
◯ delete(更新対象: 1レコード)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // usersテーブルのid:1取得 $user = $this->Users->get('1'); // ユーザーデータ削除 $this->Users->delete($user); // 生成SQL DELETE FROM users WHERE id = 1 // エンティティー削除フローメモ 1. 削除ルールが適用される(ルールのチェックに失敗した場合、削除は中止)。 2. Model.beforeDeleteイベントが起動される(このイベントが停止した場合、削除は失敗しイベントの戻り値が返される)。 3. エンティティーが削除される。 4. 全ての依存関係先が削除される(依存関係先がエンティティーとして削除されるとき、 追加のイベントが起動される)。 5. BelongsToManyアソシエーション用の全ての結合テーブルのレコードが削除される。 6. Model.afterDeleteイベントが起動される。 |
◯ deleteAll(更新対象: 条件一致レコード)
1 2 3 4 5 6 7 8 9 | // ユーザーデータ削除(ex: 2(status)の全レコードを削除する) // 戻り値: 削除した件数(対象レコードがなかった場合も、0返ってくるので要注意) $this->Users->deleteAll(['status' => '2']); // 生成SQL DELETE FROM users WHERE status = '2' |