投稿

ラベル(クエリ)が付いた投稿を表示しています

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

イメージ
例えば、 マスター データ などを 削除 する場合は、連携している過去のデータとの整合性が取れなくなるので、 ソフトデリート をする場合が多々あります。 ログ を残す意味でも使用する方もいますが、私は特に個人情報に繋がりそうな データ はできるだけ持ちたくないので、普通の デリート と ソフトデリート を使い分けしています。 Laravel ではそれらを簡単に実現でき、 ソフトデリート で 削除 したデータも必要な時だけ取得できます。 ソフトデリートとは? そもそも、 ソフトデリート を知らない方に少し説明します。 こちらのサイトがわかりやすいので引用します。 データベースの論理削除と物理削除 – to-R データベース に保存されている データ ( レコード )を完全に削除してしまう「 物理削除 」と、実際には データ は 削除 せず、 フラグ を立てて 削除 したように振る舞う「 論理削除 」があり、 ソフトデリート は後者を表します。 要は、 パソコン で言うところの ゴミ箱 に入っている状態で、 復元 することができます。 ソフトデリートに対応する さて、 ソフトデリート に対応するには、 モデル と マイグレーション ファイルを変更します。 詳細はこちらに全部書いてあります。 Eloquent:利用の開始 5.5 Laravel モデルの変更 Users モデル を例に挙げて紹介します。 ココでのポイントは以下の 3行 を追加することです。 先頭でSoftDeletesを読み込みます use Illuminate\Database\Eloquent\SoftDeletes; クラスの中でSoftDeletesを使います宣言 use SoftDeletes; 削除したら自動で削除日付を入れます protected $dates = ['deleted_at']; 完成するとこのようなります。 app\Users.php <?php namespace App; ... use Illuminate\Database\Eloquent\SoftDeletes; class Users extends Model { use SoftDeletes;...