【Laravel5】論理削除実装(ソフトデリート)はカラム追加だけではなくモデルにも記述が必要!ソフトデリートの導入手順

Laravel ソフトデリート

Laravel5 論理削除(ソフトデリート)

Laravel5 は物理削除だけでなく論理的に削除する(ソフトデリート)設定が簡単にできる仕組みを持っています。物理削除の場合は消したデータを復元させる事はできませんが、論理削除であればテーブル上は表示があるけど、抽出はされずWEB上に表示させないようにする事ができます。

Migrate ファイル に以下のカラムを記述

ソフトデリートを実装するためにはテーブルに「deleted_at」カラムが必要です。新規ではなく既存のテーブルにカラムを追加する事もできます。(カラムの追加方法はこちら)

public function up()
    {
        Schema::table('テーブル名', function (Blueprint $table) {
            $table->softDeletes();
        });
    }

Migrateファイルを記述し終わったら、migrateをしてテーブルを作成します。

$ php artisan migrate

Model に 追記

テーブル作成だけではソフトデリートを利用する事はできません。Modelファイルに以下を追記します。

use Illuminate\Database\Eloquent\SoftDeletes; // 追記

class テーブル名 extends Model
{
    // ソフトデリートを有効化
    use SoftDeletes;
    protected $dates = ['deleted_at'];
}

ソフトデリート記述方法

上記の通りカラムに追加してModelに追記したら、準備は完了です。ソフトデリート記述方法は物理削除を同じで「delete();」を利用します。

$data = テーブル名::findOrFail($id);
$data->delete(); 

上記のメソッドを実装する事でdeleted_atに日付が入りDB上は削除されませんが、通常の抽出方法ではこのデータは抽出されなくなります。

タイトルとURLをコピーしました