Laravelのソフトデリートと削除済みのデータを取得する方法

laravel-softdeletes
  • URLをコピーしました!

例えば、マスターデータなどを削除する場合は、連携している過去のデータとの整合性が取れなくなるので、ソフトデリート論理削除)をする場合が多々あります。
Laravelではそれらを簡単に実現でき、ソフトデリート論理削除したデータも必要な時だけ取得できます。

ログを残す意味でも使用する方もいますが、私は特に個人情報に繋がりそうなデータはできるだけ持ちたくないので、普通のデリート物理削除)とソフトデリート論理削除)を使い分けしています。

目次

ソフトデリートとは?

そもそも、ソフトデリート論理削除)を知らない方に少し説明します。
こちらのサイトがわかりやすいので引用します。

データベースに保存されているデータレコード)を完全に削除してしまう「物理削除」と、実際にはデータ削除せず、フラグを立てて削除したように振る舞う「論理削除」があり、ソフトデリートは後者を表します。
要は、パソコンで言うところのゴミ箱に入っている状態で、実際にはデータとして復元取得)することができます。

ソフトデリートに対応する

さて、ソフトデリートに対応するには、モデルマイグレーションファイルを変更します。
詳細はこちらに全部書いてあります。

モデルでSoftDeletesトレイトを使う

ここから、Laravelで予め用意されているUsersモデルを例に挙げて紹介します。
ココでのポイントは以下の3行を追加することです。

1 モデルの先頭でSoftDeletesトレイトを読み込みます。

クラスの中でSoftDeletesを使います宣言。

2 ソフトデリートを実行したら、自動で削除日付を入れる設定をします。

3 完成するとこのようなります。

/app/Users.php

マイグレーションの変更

次に、マイグレーションファイルのSchema::create()の最後に、削除日付のカラムを作成するソフトデリート用の関数を追加します。

/database/migrations/…_create_users_table.php

後はいつも通り、

削除済みデータの取得

Laravelソフトデートに対応したクエリビルダも用意されていますので、データ取得方法を3パターン紹介しておきます。

1 ソフトデートしたデータを含めない(通常)

2 ソフトデートしたデータも含める

3 ソフトデートしたデータのみ取得

データの復元・完全削除

最後に、ソフトデートしたデータを削除する前の状態に戻したい場合は、

ソフトデートしたデータを完全に削除物理削除)したい場合は、

を使ってください。
Laravelって本当に便利ですね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次