LaravelのControllerで使うindex・show・store・createの役割を解説

はじめに

LaravelでControllerを書くとき、よく出てくる「index」「show」「store」「create」。なんとなく使ってるけど、それぞれの意味や使い分けをちゃんと理解してる?この記事ではその違いと役割をわかりやすく解説していきます。


やりたいこと

  1. Laravelの基本的なControllerメソッドを理解する

  2. 各メソッドのHTTPとの対応を知る

  3. よくある使い方をコード付きで確認する


準備するもの

ディレクトリ構成(簡略)

app/Http/Controllers/PostController.php
routes/web.php
resources/views/post/

コードスクリプト

PostController.php(抜粋)

class PostController extends Controller
{
public function index() {
$posts = Post::all();
return view('post.index', compact('posts'));
}

public function show($id) {
$post = Post::findOrFail($id);
return view('post.show', compact('post'));
}

public function create() {
return view('post.create');
}

public function store(Request $request) {
$validated = $request->validate([
'title' => 'required|max:255',
'body' => 'required',
]);
Post::create($validated);
return redirect()->route('posts.index');
}
}

ルーティング設定

route/web.php
Route::resource('posts', PostController::class);

実行結果と使い分け

メソッド 役割 HTTP ルート例
index 一覧表示 GET /posts
show 詳細表示 GET /posts/1
create 新規作成フォーム GET /posts/create
store 保存処理 POST /posts
  • index:全件表示

  • show:1件の詳細表示

  • create:入力フォームを表示

  • store:フォームから送られたデータを保存

createとstoreの違いを丁寧に!

🔹create:入力フォームを表示するだけ
ブラウザで /posts/create にアクセスしたとき、空のフォーム画面が表示されます。
この時点ではまだDBには何も保存されません。

🔹store:フォーム送信後のデータ保存処理
ユーザーがフォームに入力して「送信」ボタンを押すと、POSTリクエストが /posts に送られます。
そのリクエストを受け取って、データベースに保存するのが store の役割です。


実行ルートとHTTPメソッド

メソッド 目的 HTTP ルート例
index 投稿の一覧 GET /posts
show 投稿の詳細表示 GET /posts/1
create 入力フォーム表示 GET /posts/create
store データ保存処理 POST /posts

注意点

  • storeには必ずバリデーションを入れる

  • showは存在しないIDで落ちないよう findOrFail を使うのが定番

  • Route::resource を使えばこれらのメソッドが自動的にルートに割り当てられる


まとめ

LaravelのControllerでは、indexshowcreatestore を適切に使い分けることで、RESTfulな設計がスムーズになります。役割とルートの関係性を理解して、効率よく開発していきましょう!

コメント

タイトルとURLをコピーしました