laravelpro_論理削除の実装

09論理削除の実装

現状ではメモが物理削除されてしまいます。

今回は、invalidというカラムを追加し0なら未削除、1なら削除ときり分ける論理削除で実装しています。

物理削除を論理削除に修正していきましょう。

public function delete(Request $request) {
    $user_id = Auth::id(); // 追記
    $delete_id = $request->delete_id;
    Memo::where('user_id', $user_id)
        ->where('id', $delete_id)->update(['invalid' => 1]); // 変更

    return redirect('/') // 変更
}

コードの解説をします。

Memo::where('user_id', $user_id)->where('id', $delete_id)->update(['invalid' => 1]);

この部分では、user_idとidでレコードを絞った後、update文でinvalidを0から1に変更しています。

DBからは削除されませんが画面上では表示されません。

削除ボタンを押してメモを削除してみましょう。

メモが削除されました!

// ターミナルが mysql> になってない場合
sudo mysql -u root

SELECT * FROM 'memo';

テーブルではメモが残っています。

invalidのカラムに注目してください。1が入っており、削除されている状態になっています。

画面に表示されないのはshow()メソッドでwhere('invalid’, 0)と絞り込みをしているからです。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です