CakePHP3 Wayな論理削除プラグイン Trash
(個人感想として)CakePHP3の作法にしたがっていて、コードを読んでみて勉強になった論理削除プラグインを紹介します。
特徴
よくある論理削除プラグインとほとんど同じですが、特徴としては以下のような感じ。
- 日時のフィールド(
deleted
かtrashed
がデフォルト)を使って論理削除を実現している(フラグはない) - CASCADE DELETEがCakePHP3の作法にそって綺麗に実装されている
- リストアもCASCADEで復旧できるメソッドが提供されている
-
Model#delete()
メソッドをそのまま利用できる- イベントの
Model.beforeDelete
で処理を実現している - ちゃんと
Model.afterDelete
をディスパッチしているのも良い
- イベントの
- 設定でいろいろ変更可能
実装はとてもシンプルなので、Behavior実装の勉強になるのではないかと思います。
個人的にはCASCADE DELETEがCakePHP3の作法で綺麗に実装されていて勉強になりました。
(Trashプラグインを参考に別のプラグインを実装しています)
使い方
README に書かれている内容で十分です。
ソースコードを読むと勉強になりますね。