🐘
Laraevl でルートモデル結合(Route Model Binding)を使う
ルートモデル結合 is 何?
その昔「なにそれ?」ってなったのでまとめた記録.
ルートモデル結合(Route Model Binding)は Laravel が提供する強力な機能の一つで,ウェブルート(URL)のパラメータを自動的にモデルのインスタンス(今回は Tweet のデータ)に変換する仕組みである.
例えば,ルーティングに以下のように設定されている場合,通常,{post}
パラメータは投稿の ID を表す.ルートモデル結合を使用すると,PostController の show メソッドには、ID に基づいてデータベースから検索された Post モデルのインスタンスが直接渡される.
// web.php
🔽 パラメータに {post} (← モデル名小文字)を指定
Route::get('/posts/{post}', [PostController::class, 'show']);
// PostController.php
// 🔽 引数に直接 Post モデルを指定できる
public function show(Post $post)
{
return view('posts.show', compact('post'));
}
コントローラ作成時に --resource
オプションを指定して実行するとルートモデル結合が自動的に設定される.ルートモデル結合は必ず使用しなければならないわけではないが,下記の利点がある.
-
コードの簡素化: モデルの検索ロジックをルートやコントローラーから取り除き,コードを簡潔に保つことができる.
-
自動的な 404 エラー応答: モデルが見つからない場合,Laravel は自動的に 404 エラー応答を返す.これにより,手動でモデルが存在するかどうかをチェックする必要がなくなる.
まとめ
とても強力なので基本使用する姿勢でいく.
以上だ( `・ω・)b
Discussion