Laravelルーティングとコントローラーを初心者向けに解説|Blade・Eloquent・マイグレーションまで復習
Laravelを勉強していると、最初は「Routeって何をしているんだろう?」「Controllerは何のためにあるんだろう?」と、少し分かりにくく感じることがあります。
僕自身もLaravelを学習していて、ルーティング、コントローラー、Blade、Eloquent、マイグレーションと、それぞれ単体では理解できても、「実際にユーザーがページを開いたとき、Laravelの中で何が起きているのか?」と聞かれると、少し曖昧になることがありました。
そこで今回は、Laravelの開発環境を整えながら、ルーティング → コントローラー → Blade → Eloquent → データベースという一連の流れを復習していきます。
旅行に例えるなら、ルーティングは「目的地までの道案内」、コントローラーは「受付窓口」、Bladeは「実際に見る景色」、Eloquentは「データベースとの通訳」のようなイメージです。
Laravelのルーティングとは?URLと処理の関係を理解する
Laravelのルーティングは、ブラウザから送られてきたURLとHTTPメソッドを見て、どの処理を実行するのか決める仕組みです。
例えばブログサイトで/postsにアクセスしたとします。
Laravelは「このURLにアクセスされた場合は、投稿一覧を表示する処理を呼び出そう」と判断します。
つまりルーティングは、Webアプリケーションの中で交通整理をしているような存在です。
Laravelの基本的な処理の流れ
LaravelのWebアプリケーションでは、ざっくり次のような流れで処理が進みます。
- ブラウザからリクエストが送られる
- ルーティングがURLとHTTPメソッドを確認する
- 該当するコントローラーが呼び出される
- 必要に応じてEloquentでデータベースを操作する
- Bladeで画面を作る
- ブラウザへレスポンスを返す
ブラウザ → ルーティング → コントローラー → Eloquent → Blade → レスポンス
この流れを頭に入れておくと、Laravelの各機能がバラバラではなく、一つのWebアプリケーションとしてつながって見えてきます。
LaravelのルーティングとHTTPメソッドを理解する
Laravelのルーティングを理解するうえで重要なのが、HTTPメソッドです。
同じ「投稿」というデータを扱っていても、一覧を見るのか、詳細を見るのか、新しく作るのか、更新するのか、削除するのかによって、HTTPメソッドやURLの役割が変わります。
| HTTPメソッド | URL例 | 役割 |
|---|---|---|
| GET | /posts | 投稿一覧を表示 |
| GET | /posts/1 | 投稿の詳細を表示 |
| GET | /posts/create | 新規作成フォームを表示 |
| POST | /posts | 投稿を作成 |
| GET | /posts/1/edit | 編集フォームを表示 |
| PUT / PATCH | /posts/1 | 投稿を更新 |
| DELETE | /posts/1 | 投稿を削除 |
この7パターンを覚えておくと、LaravelでCRUDアプリを作るときにかなり楽になります。
CRUDとは、Create(作成)、Read(読み取り)、Update(更新)、Delete(削除)の頭文字です。
LaravelのRoute::resourceが便利
Laravelでは、CRUDに対応したルートをまとめて定義できるRoute::resource()が用意されています。
use App\Http\Controllers\PostController;
Route::resource('posts', PostController::class);
これだけで、投稿に関する主要なルーティングをまとめて設定できます。
最初にこれを見たときは、「たった1行でこんなにルートが作られるのか」と少し驚きました。
Laravelでは、このように繰り返し登場するWebアプリケーションの構造を効率よく書けるようになっています。
Laravelのコントローラーとは?ルーティングとの違い
ルーティングが「どの処理へ案内するか」を決めるものなら、コントローラーは実際の処理を担当する窓口と考えると分かりやすいです。
例えば次のようなルートを設定したとします。
Route::get('/posts', [PostController::class, 'index']);
/postsへアクセスすると、PostControllerのindex()が呼び出されます。
Laravelでコントローラーを作成する
LaravelではArtisanコマンドを利用して、コントローラーを作成できます。
php artisan make:controller PostController
CRUDを意識したリソースコントローラーを作る場合は、次のコマンドも便利です。
php artisan make:controller PostController --resource
リソースコントローラーでは、index、create、store、show、edit、update、destroyなど、CRUDを意識したメソッドを整理できます。
Laravelのコントローラーを太らせすぎない
Laravelを学習していると、ついついコントローラーの中に全部の処理を書きたくなります。
しかし、アプリケーションが大きくなってくると、コントローラーに複雑な処理が集中してしまいます。
そのため、コントローラーはリクエストを受け取り、必要な処理へつなぐ役割にするという考え方が大切です。
複雑なビジネスロジックは、モデルやサービスクラスなどへ切り分けていくと、後からコードを読み返したときにも理解しやすくなります。
LaravelのBladeとは?コントローラーから画面へデータを渡す
ルーティングとコントローラーが理解できたら、次に覚えておきたいのがBladeです。
BladeはLaravelで利用されるテンプレートエンジンです。HTMLをベースにしながら、Laravelのデータを画面へ表示できます。
例えば、コントローラーから投稿データを渡します。
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
すると、resources/views/posts/index.blade.phpというBladeファイルでデータを利用できます。
<h1>投稿一覧</h1>
<ul>
@foreach ($posts as $post)
<li>
{{ $post->title }}
</li>
@endforeach
</ul>
ここで重要なのは、コントローラーがデータを用意し、Bladeがそのデータを画面として見せるという役割分担です。
旅行に例えるなら、コントローラーが旅の準備をして、Bladeが「実際に目の前に広がる観光地」のようなものです。
LaravelのEloquentとは?データベースを操作する仕組み
Webアプリケーションでは、投稿やユーザーなどのデータを保存する必要があります。
そこで登場するのがEloquent ORMです。
Eloquentでは、データベースのテーブルに対応するモデルを使って、データの取得、登録、更新、削除などを行えます。
Eloquentで投稿データを取得する
$posts = Post::all();
投稿一覧を取得したい場合、このように書けます。
IDが1の投稿を取得したい場合は、次のような書き方もできます。
$post = Post::find(1);
Laravelを勉強し始めたころは、SQLを直接書かなくてもPHPのコードでデータベースを操作できることがかなり便利に感じました。
ただし、裏側ではデータベースとのやり取りが発生しています。
Eloquentは「データベースを意識しなくていい魔法」ではなく、データベースとのやり取りをLaravelらしく扱いやすくしてくれる仕組みと考えると理解しやすいです。
Laravelのマイグレーションとは?データベースの構造を管理する
Eloquentでデータを扱うためには、そもそもデータベース側にテーブルが必要です。
そこで登場するのがマイグレーションです。
マイグレーションは、データベースのテーブル構造をコードで管理するための仕組みです。
例えば、postsテーブルを作るマイグレーションでは次のように記述します。
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->timestamps();
});
マイグレーションを利用すると、「どんなテーブルを作ったのか」「どんなカラムを追加したのか」といったデータベースの変更履歴をコードとして管理できます。
Laravelでモデルとマイグレーションを作成する
Laravelでは、モデル作成時にマイグレーションも一緒に作成できます。
php artisan make:model Post -m
Laravelの学習では、Model → Migration → Database → Eloquentという関係もセットで覚えておくと、かなり整理しやすくなります。
LaravelでCRUDを作るときの全体像
ここまで学んだ内容を、一つのブログ投稿機能としてつなげてみます。
Laravel CRUDの基本的な流れ
- マイグレーションでpostsテーブルを作る
- Postモデルを作成する
- ルーティングを設定する
- PostControllerを作成する
- Eloquentで投稿データを取得する
- Bladeへデータを渡す
- Bladeで投稿一覧を表示する
- フォームから投稿を登録する
- 投稿を編集・更新する
- 不要な投稿を削除する
こうして並べてみると、Laravelの各機能が独立しているわけではないことが分かります。
それぞれがバトンを渡すようにつながっているんですね。
Laravelのバリデーションも忘れない
投稿フォームからデータを受け取る場合は、バリデーションも重要です。
例えばタイトルを必須項目にする場合、次のように入力値をチェックできます。
$validated = $request->validate([
'title' => 'required|max:255',
'body' => 'required',
]);
ユーザーが入力した値を、そのまま信じてデータベースへ保存するのは避ける必要があります。
必須項目なのか、文字数は問題ないのかなどを確認してから処理することが大切です。
Laravelでフォーム処理を勉強するときは、ルーティング・コントローラー・バリデーション・Eloquentをセットで覚えていきたいところです。
LaravelでPOST後にリダイレクトする理由
投稿を登録したあと、登録処理を行ったページをそのまま表示するのではなく、別のページへリダイレクトする設計がよく使われます。
return redirect()->route('posts.show', $post);
これはユーザーが登録後にブラウザを更新した場合など、同じPOST処理が再送信されることを避けるためにも重要な考え方です。
ブログ記事を投稿したあとに、「保存できたかな?」と思ってブラウザを更新することがありますよね。
Webアプリでは、こうしたユーザー操作も想定して画面遷移を設計する必要があります。
Laravelのルートを確認する方法
「今、このLaravelアプリにはどんなルートが登録されているんだろう?」と思ったときに便利なのが、php artisan route:listです。
php artisan route:list
ルートが増えてくると、web.phpを眺めるだけでは全体像を把握しにくくなります。
そんなときはターミナルからルート一覧を確認すると、URL、HTTPメソッド、コントローラーなどをまとめて確認できます。
Laravelで「ルートが動かない……」となったときは、まずこのコマンドを使って確認する習慣をつけたいと思いました。
Laravelルーティングで覚えておきたいポイント
- ルーティングはURLとHTTPメソッドに応じて処理を振り分ける
- コントローラーはリクエストを受け取り、処理をつなぐ窓口
- Bladeはユーザーへ表示する画面を作る
- Eloquentはモデルを通してデータベースを操作する
- マイグレーションはデータベースの構造をコードで管理する
- CRUDは作成・読み取り・更新・削除の基本パターン
- Route::resource()を使うとCRUD向けのルートをまとめて定義できる
- php artisan route:listで登録済みのルートを確認できる
- フォームから受け取るデータはバリデーションする
- コントローラーに複雑な処理を詰め込みすぎない
Laravelを学習して感じたこと
今回あらためてルーティングから復習してみて感じたのは、Laravelは「覚える機能が多い」というより、それぞれの機能がどうつながっているのかを理解することが大切だということです。
最初はRouteを書いて、Controllerを書いて、Bladeを書いて……と、ファイルが次々に出てくるので少し迷子になりました。
でも、
URLが来る
↓
Routeが案内する
↓
Controllerが処理する
↓
Eloquentでデータを取得する
↓
Bladeで画面に表示する
と考えると、一気に見通しが良くなります。
旅行でも、目的地だけを覚えていても、「どの駅から乗るのか」「どこで乗り換えるのか」が分からないと目的地にはたどり着けません。
Laravelもそれと似ています。
個々のコードを暗記するより、アプリケーション全体の流れを地図のように頭へ入れることが、初心者のうちは特に大切なのだと思います。
今後はルーティングだけでなく、Bladeでの画面作成、Eloquentによるデータ操作、フォームとバリデーションなども実際に手を動かしながら復習して、「コードを書ける」だけではなく、「なぜこの場所にこの処理を書くのか」を説明できるようになりたいです。
まとめ|Laravelはルーティングから全体の流れを理解しよう
今回はLaravelのルーティングとコントローラーを中心に、Blade、Eloquent、マイグレーションまでを一つの流れとして復習しました。
特に初心者のうちは、「RouteはRoute」「ControllerはController」と個別に暗記するより、ユーザーがURLへアクセスしてから、最終的に画面が表示されるまでの流れを意識すると理解しやすくなります。
LaravelでWebアプリを作るなら、まずは小さなCRUDアプリを実際に作ってみるのがおすすめです。
投稿一覧、投稿詳細、新規投稿、編集、削除まで一通り作るだけでも、Laravelの基本構造がかなり見えてきます。
次の学習では、今回復習したルーティングを入口にして、Bladeで画面を作り、Eloquentでデータベースと接続し、最終的にLaravelで簡単なCRUDアプリを一つ完成させるところまで進めていきたいと思います。







0 件のコメント:
コメントを投稿