Laravelの便利な機能「SoftDletes」で論理削除が簡単にできる
softDeletesとは何か
LaravelにおけるsoftDeleteとは、Laravelが提供する論理削除機能です。以下のような特徴を持ちます。
- レコードを物理削除しない
- delete_atに日時が入るだけ
- 通常のクエリでは自動的に「削除済みを除外」してくれる
つまり、削除したように見せてくれる仕組みです。それでは実際の使い方を解説します。
実際の使い方
- Migrationにdeleted_atを追加する
Schema::table('users', function (Blueprint $table) { $table->softDeletes(); // deleted_at カラムを追加 }); - Modelにトレイトを追加する
use Illuminate\Database\Eloquent\SoftDeletes; class User extends Model { use SoftDeletes; }
上記でSoftDletesが有効になりました。
実際の動き方
ユーザーを削除してみます。
$user->delete();
上記を行うと下記になります。
id: 1 / name: Erika/ deleted_at: 2026-04-02 15:00:00
通常のクエリでは自動で除外されます。
User::all()
削除済みも含めて取得したい場合は以下です。
User::withTrashed()->get();
削除済みだけ取得したい場合は以下です。
User::onlyTrashed()->get();
復元したい場合は以下です。
$user->restore();
完全に削除したい場合は以下です。
$user->forceDelete();
まとめ
特に難しい作業もなく、簡単に実装できるLaravelの論理削除の紹介をしました。ご自身の使い道に合わせて有効活用していただたら幸いです。
エンジニアのみなさまへ
株式会社オートプロジェクトでは、中小企業向けのシステム・アプリケーション開発 / 外注サービスを提供しております。
貴社のニーズに応じた柔軟なサポートを行いますので、ぜひお気軽にご相談ください。
