LaravelのRoute::resource(基礎)


皆さん、こんにちは
今回はLaravelを勉強している時に、いまいち理解が出来なかったRoute::resourceについて簡単に書いてみました。
メモ程度に書くのでよろしくお願いします
Laravelの基本的な説明は割愛させていただきます。

開発環境

・Mac
・php 7.4.6
・Laravel 7.15.0

Route::resourceとは

Laravelではルート情報をweb.phpに以下のように書きますよね。

web.php
Route::get('top', 'topController@index');

では、Route::resourceを見ていきます。

まずは、terminalで以下のコマンドを打ちます。

php artisan make:controller PostsController --resource
PostsController.phpというファイルが、作成されます。

PostsController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class PostsController extends Controller
{
    public function index()
    {

    }

    public function create()
    {

    }

    public function store(Request $request)
    {

    }

    public function show($id)
    {

    }

    public function edit($id)
    {

    }

    public function update(Request $request, $id)
    {

    }

    public function destroy($id)
    {

    }
}

見てわかる通り、resourceはCRUDの機能を全て持っているのです。

その後、web.phpにルート情報を書きます。

web.php
Route::resource('posts', 'PostsController')

これで下準備が終わりました。

resourceの使い方(一例)

ここからは具体的に使い方の一例を紹介します。
PostsController.phpのcreateアクションと、storeアクションは新規作成などに使います。

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

create.blade.phpに新規作成のビューを作成し、その中に新規作成用のフォームとボタンを作ります。

create.blade.php
<a href={{ route('posts.store') }}>新規作成</a>

このボタンを押すことによって、create.blade.phpのフォームの情報がPostsController.phpのstoreアクションに飛ばされます。
あとは、storeアクションに、データベースにデータを追加する処理を書いて、リダイレクトすれば良いですね。
他のアクションは以下のような時に使います。

showアクション
 投稿の詳細を表示
editアクション, updateアクション
 編集
destroyアクション
 削除

今回は、resourceの概要を書いただけで、詳しいコードは書きませんでした。
間違っていることなどありましたら、指摘お願いします

参考にしたもの

1, 書籍 「Laravel入門」
2, Laravel公式