対象modelにSoftDeletesを記述すると、ソフトデリート(論理削除)対象となる。
use Illuminate\Database\Eloquent\SoftDeletes;
・
・
・
use SoftDeletes;
仕組みは、deleted_atカラムに日時がセットされていればソフトデリート済みレコード、nullの場合は生きているレコードという仕組みとなっている。
なので、deleted_atカラムを自前で同じように制御すればソフトデリート機能を使わず実装することも可能であるが、生きているレコードを取得する場合は常にwhereNull(‘deleted_at’)を指定しなければならないのに対し、ソフトデリート機能を使うと意識しなくて済むし、ソフトデリートの設定をしたからといって物理削除が出来なくなるという訳ではないので論理削除の仕様の場合はソフトデリート機能を使ったほうが良いと思われる。
あっそうそう、なのでソフトデリートの機能を使う場合は、deleted_atカラムが必要!!
使い方
// 通常(生きている)レコードの取得
Member::get();
// ソフトデリート済みレコードの取得
Member::onlyTrashed()->get();
// 全ての(通常 + ソフトデリート済み)レコードの取得
Member::withTrashed()->get();
// ソフトデリート
Member::find($id)->delete();
// 復元
Member::withTrashed()->find($id)->restore();
// 物理削除
Member::find($id)->forceDelete();