ルーティングを設定する
最後の仕上げとして、ルーティングを設定します。web.phpに以下のコードを追加します。
Route::controller(BookController::class)->prefix("books")->name("books.")->group(function () {
Route::get("/show", "showBooks")->name("show");
Route::get("/show-detail/{book}", "showDetailBook")->name("detail");
Route::get("/create", "createBook")->name("create");
Route::post("/create", "storeBook")->name("store");
Route::get("/update/{book}", "editBook")->name("edit");
Route::patch("/update/{book}", "updateBook")->name("update");
Route::delete("/delete/{book}", "destroyBook")->name("destroy");
});
Routeクラスのcontrollerメソッドは使用するコントローラーを一括で指定するメソッドです。後述するgroupメソッドで一括指定できます。prefixメソッドはURLに指定したプレフィックスを追加します。上記では、getメソッドで/showと指定した場合、URLは、http://localhost/books/showとなります。すべてのURLに/booksが追加されるため、一括で指定するのに便利です。nameメソッドは、個別のルートのnameメソッドでつける名前の前に追加することができ、上記の場合showとgetメソッドのところで定義した場合、名前はbooks.showとなります。これは、共通の名前を使用するのに便利です。groupメソッドは引数の中の関数に個別のルーティングを指定し、それらをグループ化することができます。
上記の設定が終わったら、http://localhost/books/showにアクセスします。初回のアクセス時には、おそらくデータが入っていないので、新規作成でいくつかデータを追加してみます。もしくは、MySQLにログインし、以下のコマンドでデータを追加します。
insert into books (title, author, price) values ("KOKORO", "NATHUME Souseki", 396);
valuesの後は、新規追加したい値を記述します。
次に、詳細リンクをクリックし、bookの詳細が表示されるか確認します。詳細の確認が終わったらbooksの一覧に戻り、更新リンクをクリックして、更新画面に遷移します。更新画面で一部の値を変更し、変更処理が正常に行われるか確認します。次に、削除ボタンを押してデータが削除される確認します。すべてが問題なければ成功です。
以上で、データベースの表示、作成、更新、削除ができるようになったと思います。次回は、今までのデータの表示、作成、更新、削除のコントローラーを簡単に記述できるようになるリソースコントローラーについて解説します。