Laravelでのソフトデリートの方法【現役エンジニアが解説】
今回は、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メソッドを使います。