Laravel Breezeのユーザ削除機能を物理削除から論理削除に変更する【Laravel10】

Laravel

Laravel Breezeでは、ユーザが自分でアカウントを削除できる機能があります

しかしBreezeのデフォルトではユーザ情報はDBから物理削除(Hard Delete)されてしまいます。

物理削除だと色々と困ることもあるので、論理削除(Soft Delete)に変更したい所です

幸いにも、簡単に変更することができます

DBの修正

まずはDBのUserテーブルに論理削除用のカラムを追加します

マイグレーションで実行する場合は以下のコードを設定してマイグレーションを実行します

$table->softDeletes();

マイグレーションせずに、直接DBに追加する場合は以下のdeleted_atカラムを該当テーブルに追加します

名前タイプ属性NULLデフォルト値
deleted_attimestampはいNULL

モデルの修正

namespace App\Models;

use Illuminate\Database\Eloquent\SoftDeletes;// <- を追加

class User extends Authenticatable implements MustVerifyEmail
{
    use HasApiTokens, HasFactory, Notifiable, SoftDeletes; // <- 「SoftDeletes」を追加

あとはUserのモデルクラスにSoftDeletesのtraitを追加するだけです

たったこれだけで、ユーザの削除機能を論理削除に変更することができます

簡単ですね