【PHP/Laravel入門】データベース内のデータを削除する方法まとめ

みなさんこんにちは、エンジニアのオータケです!

今回はLaravelを使ったデータベース内のデータ削除についてお話をしたいと思います。

まずデータの削除方法が2つあることを皆さんはしっていますか?

「え?データの削除方法って一つじゃないの?」
「2種類あるのは知っているけど、Laravelでの書き方がわからない」

といった方は必見です!

本記事では

[基本]論理削除と物理削除の違い
[基本]論理削除を意識したマイグレーションファイルの編集
[実践]データ削除の方法

について解説をしていきます。

データの削除はWebアプリケーションを作る上でよく出てくる話でもあるので皆さんしっかり学んでいきましょう!

Laravelとは?

まず、「Laravelが何かわからない」という方もいるかと思います。

そういった方にはLaravelとは何かをとても詳しく解説した記事がありますので次の記事をご覧ください。

この記事を読んでいただければ「今、流行りのLaravel」について知ることができますよ!

Laravelとは?PHPの主流WEBフレームワークを徹底解説
更新日 : 2019年8月14日

よく聞く「論理削除(SoftDelete)」と「物理削除(HardDelete)」

そもそも論理削除と物理削除とは?

まず論理削除物理削除の違いについて説明をしたいと思います。

言葉を見る限りとても難しく感じそうですが、至って簡単です。

わかりやすく一言で表せば、

論理削除・・・実際にはデータは消えてないが、表面的に消えたことにしてしまう
物理削除・・・実際にデータを削除する

という違いがあります。

これらにどういった違いがあるかというと、ある掲示板があったとします。

書き込みを削除したけどあとからやっぱり書き込みを復活させたい、間違って削除してしまったという場合には論理削除を用います。

逆に完全にデータを削除しておきたいという場合には物理削除を用います。

Laravelの場合、特に何も設定をしなければ物理削除でデータを削除します。

もし、論理削除をしたい場合は次の項から見ていってください。

物理削除の場合は「実際に削除してみる」からでも構いません。

まずはマイグレーションファイルから

論理削除を行いたい場合はテーブルの構造を変える必要があるため、Laravelでプロジェクトを作った際にデフォルトで生成されるXXXXX_create_users_table.phpを変える必要があります。
(XXXXXは日付)

このコードでデフォルトで生成されるコードとの違いが一箇所あります。

どこだかわかりますか?

$table->softDeletes()というメソッドを呼び出しているところがあるかと思いますがこのメソッドを呼び出すことでマイグレーション時にテーブル内に削除されたか削除されていないかを判断できるカラムが追加されることになっています。

ちなみにこの削除されたか削除されていないかのカラムですが特に指定がなければdeleted_atが自動的に作られる仕組みになっています。

この行を追加したらマイグレーション作業を行ってテーブル構造をリフレッシュしてみましょう。

実際に削除してみる

この項では先程マイグレーションした内容をもとに実際にデータを削除してみます。

論理削除の場合はモデルに少し設定の追記が必要です。
といっても、3行文追加するだけで大丈夫です。

では論理削除に対応したUserモデルを見てみましょう!

ここからはデータの削除方法なので論理・物理削除共通になります。

例えば、特定のユーザーを削除したい場合

とすることで削除することが可能です。

論理削除したデータも含めて取得する

最後に論理削除したデータを含めて取得する際にはどういった処理を書けばよいでしょうか?

これも簡単です。

withTrashedメソッドを使うことで実現できます。

このコードの場合はusersテーブルのIDが100よりも大きい論理削除済みを含めたデータを取得するという内容になっています。

まとめ

いかがだったでしょうか?

論理削除物理削除の意味から実際に削除する方法まで解説をしました。

自分の作成しているサービスに沿って、論理削除と物理削除を使い分けていく必要があるかと思います。

Laravelはとても便利なのでこういった機能が少ない記述量で実現することができます。

どんどん覚えて使っていきましょう!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

オータケ

オータケ

30歳、フリーランスプログラマ。中学の頃よりプログラミングに興味を持ちゲーム開発やWebサイト構築などを経験
新しいフレームワークやライブラリに興味があり革新的な機能が含まれていると泣いて喜ぶ。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説