エンジニア日記

日々の開発あれこれ

Laravel5で論理削除を実装する手順

1. Migrateファイルを作成時、以下のカラムを記述

1
$table->softDeletes();  // deleted_atカラムが追加される

2. Modelに以下を追加

1
2
3
4
5
6
7
use Illuminate\Database\Eloquent\SoftDeletes; // 追加する

class Hoge extends Model
{
    // 論理削除を有効化
    use SoftDeletes;
    protected $dates = ['deleted_at'];

上記1.2の設定で論理削除が有効になる。
deleted_atに日付が登録されていれば、
SELECT文にWHERE句などを記述しなくても、取得されない。

3. Eloquentでdeleted_at に値を登録

通常のdelete文から変更なし

1
2
$fuga = Fuga::findOrFail($id);
$fuga->delete(); // deleted_at = now()が入って、delete文でカラムは削除されない。