Laravelでのソフトデリートの方法【現役エンジニアが解説】

PROGRAM

今回は、Laravelでのソフトデリートの方法について、簡単に解説していきます。

下準備

Laravelにはソフトデリートの仕組みが用意されています。

public function up()
{
    Schema::create('hoges', function (Blueprint $table) {
        $table->id();
        // ...
        $table->softDeletes(); // 追加
    });
}

まずはmigrationファイルに上記のように追記し、php artisan migrateを実行します。

class Hoge extends Model
{
    use SoftDeletes; // 追加

    protected $dates = ['deleted_at']; // 追加

    // ...
}

その後でモデルファイルも上記のように追記することによって、ソフトデリートの準備が完了します。

ソフトデリートの方法

Laravelではソフトデリートかどうか意識する必要はありません。

すなわち、deleteメソッドを使えば、ソフトデリート対応のテーブルであれば、ソフトデリートされます。

Hoge::find(1)->delete();

上記の例では、Hogeというテーブルでidが1のレコードをdeleteメソッドを使って、ソフトデリートしています。

完全削除と復元の方法

ソフトデリートされたレコードは完全削除と復元ができます。

Hoge::onlyTrashed()->find(1)->forceDelete();

Laravelでは、上記のようにforceDeleteメソッドで完全削除ができます。

Hoge::onlyTrashed()->find(1)->restore();

一方で、ソフトデリートされたレコードを復元する場合には、上記のコードのようにrestoreメソッドを使います。