🐘

Laravel のリソースコントローラについてのまとめ

2024/09/25に公開

状況

過去,「リソースコントローラ is 何?」状態だったので状態自力で扱うためにまとめた.

リソースコントローラとは

リソースコントローラとは,Laravel で CRUD 処理を行うために使用するコントローラ.リソースコントローラには,CRUD 処理を行うためのメソッドが用意されている.

リソースコントローラに用意されているメソッド一覧

下記のようにリソースコントローラには,CRUD 処理を行うためのメソッドが用意されている.それぞれのメソッドには役割が決められており,この通りに実装することで CRUD 処理を動かすことができる.

Laravel の基本の形となっているため,まずはこの形で実装を進めるのがオススメ.

メソッド 役割
index データの一覧を表示する
create データの作成画面を表示する
store データの作成処理を行う
show データの詳細画面を表示する
edit データの編集画面を表示する
update データの更新処理を行う
destroy データの削除処理を行う

リソースコントローラの作成

コマンド実行時にオプションを付けることでリソースコントローラを作成することができる.

php artisan make:controller PostController --resource

リソースコントローラのルーティング

リソースコントローラを使用する場合,下記のルーティングを定義することで CRUD 処理のルーティングがすべて自動的に行われる.

Route::resource('posts', PostController::class);

上記のコードを書くことで動作するようになるルーティング

php artisan route:list --path=posts

# 実行結果
+--------+-----------+---------------------+----------------+-------------------------------------------------+-----------------+
| Domain | Method    | URI                 | Name           | Action                                          | Middleware      |
+--------+-----------+---------------------+----------------+-------------------------------------------------+-----------------+
|        | GET|HEAD  | posts               | posts.index    | App\Http\Controllers\PostController@index       | web             |
|        | POST      | posts               | posts.store    | App\Http\Controllers\PostController@store       | web             |
|        | GET|HEAD  | posts/create        | posts.create   | App\Http\Controllers\PostController@create      | web             |
|        | GET|HEAD  | posts/{post}        | posts.show     | App\Http\Controllers\PostController@show        | web             |
|        | PUT|PATCH | posts/{post}        | posts.update   | App\Http\Controllers\PostController@update      | web             |
|        | DELETE    | posts/{post}        | posts.destroy  | App\Http\Controllers\PostController@destroy     | web             |
|        | GET|HEAD  | posts/{post}/edit   | posts.edit     | App\Http\Controllers\PostController@edit        | web             |
+--------+-----------+---------------------+----------------+-------------------------------------------------+-----------------+

まとめ

リソースコントローラは Laravel の基本形であり,CRUD 処理を簡単かつ効率的に行うことができる.

以上だ( `・ω・)b

GitHubで編集を提案

Discussion