LoginSignup
0
0

More than 1 year has passed since last update.

Laravel6 論理削除

Posted at

ほ〜と思ったことがあったので共有。

物理削除と論理削除

ユーザーのデータを削除したい時。
表題の2つの方法があるみたいです。

物理削除は実際にSQLでDeleteを実行し、データベースから削除される。
なので復元したり削除されたデータを参照することはできない。

論理削除は実際にはデータを削除せずに、削除しているかのように振る舞うことです。
消されたフリをしているだけなので復元すぐできるし参照もできるのです。

↓論理削除Laravelでは簡単にできるようです。

論理削除用カラム追加

[database/migrations/yyyy_mm_dd_000000_create_users_table.php]※一部抜粋
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            // 省略
            $table->softDeletes();
        });
    }

$table->softDeletes()で「delete_at」というカラムが作成されます。
↓続いてモデルをいじります。

app/User.php
use Illuminate\Database\Eloquent\SoftDeletes;
// 省略
class User extends Authenticatable implements MustVerifyEmail
{
    // 省略
    use SoftDeletes; // 追加
    // 省略

これだけで、今回の場合Userモデル関連のdelete()を行うと「delete_at」カラムに日付が入力されて論理削除になる!

ただしやみくもに論理削除を設計に組み込むと
論理削除データが多い場合データ量増大やそれに伴う検索性能の劣化する可能性があるため
あまりよろしくない。

まとめ

現段階ではこの2つを使いこなすのは到底難しいけども
概念として知っておくべきだと思ったのでメモしておきました。

間違ってること言ってるかもしれないので鵜呑みは要注意。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0