初心者向け。LaravelでCRUDにおける削除機能の作り方

初心者向け。LaravelでCRUDにおける削除機能の作り方

1654 回閲覧されました

みなさんこんにちは、jonioです。

今回は削除機能を実装する方法を説明します。

今回はsummernoteでエディタを作ってそこに書いた内容をビューで反映させてそこに削除機能を実装していますがsummernoteを使っていなくても(通常の投稿なら)実装できる様になっています。

私のやり方に完全に合わせてsummernoteも実装してみようと思う方は↓をどうぞ。

 

GitのURL

エラー等が出て上手くいかない場合はGitのURLを掲載するのでクローンして使って下さい。

 

ルーティング

web.phpのコードを↓にします。

37行目に削除のルーティングを書いています。

削除する時はHttpメソッドはdelete(Route::deletedeleteの事) にします。

「{id}」はモデルの所で説明します。

次はコントローラーですがweb.phpでコントローラーは「SummernoteController」にしているのでSummernoteコントローラーを作成して下さい。

アクション名を「delete」にしているのでdeleteアクションに記述します。

 

コントローラー

コントローラーに記述をする前にする事があります。

データベースの内容を消す設定をするのでモデルを作成しますがPostモデルとします。

削除する内容(記事の内容)をbodyカラムに保存するのでマイグレーションファイル(本日の日付_create_posts_table.php)に↓の記述をします。

21行目は記事のタイトル用のカラムなので作成しなくてもいいです。

「php artisan migrate」でデータベースに反映させます。

するとデータベースが↓になりtitleカラムとbodyカラムが作成されているのが確認できます。

↑の赤枠の「title」の左にidカラムがありますがこれがルーティングでの「$id」に当たります。

それではSummernoteController.phpを↓にします。

必要なコードは44行目〜47行目です。

45行目で削除する記事を「$id」で指定して削除します。

記事を保存する時に17行目〜21行目(titleカラムを使わない場合は18行目は必要ないです)を使いますが17行目の「$posts」が記事を削除する時の記述に必要になります。

最後はビューです。

 

ビュー

show.blade.phpを↓にします。

削除の部分は9行目〜13行目です。

削除機能はaタグではなくてformタグの中に書くというのは知っておきましょう。

また10行目に「@csrf」がありますがその下の行「@method(DELETE)」を書かないといけないのも知っておきましょう。

9行目に「summernote.delete」がありますがルーティングの「->name(‘summernote.delete‘)」の「summernote.delete」と同じにしないといけません。

9行目の「[‘id‘ => $content->id]」ですがidはコントローラーのdeleteアクションの中にある「$id」に対応していて$content->idの$contentは5行目の$contentの事で$content->idはデータベースのidカラムに当たります。

これで削除機能の完成です。