モデルにfillableを記述する
app/Http/ModelsのBook.phpにアクセスし、下記のコードを追加します。
protected $fillable = [
"title",
"author",
"price",
];
コントローラーを作成する
次にコントローラーを作成します。以下のコマンドで、BookControllerを追加します。
php artisan make:controller BookController
次に各メソッドを追加します。今回は一度にすべてのメソッドを追加します。BookControllerは以下のようになります。
<?php
namespace App\Http\Controllers;
use App\Models\Book;
use Illuminate\Http\Request;
class BookController extends Controller
{
public function showBooks() {
$books = Book::all();
return view("show-books", compact("books"));
}
public function showDetailBook(Book $book) {
return view("show-detail-book", compact("book"));
}
public function createBook() {
return view("create-book");
}
public function storeBook(Request $request) {
Book::create([
"title" => $request->input("title"),
"author" => $request->input("author"),
"price" => $request->input("price"),
]);
return redirect(route("books.show"));
}
public function editBook(Book $book) {
return view("edit-book", compact("book"));
}
public function updateBook(Request $request, Book $book) {
$book->update([
"title" => $request->input("title"),
"author" => $request->input("author"),
"price" => $request->input("price"),
]);
return redirect(route("books.show"));
}
public function destroyBook(Request $request, Book $book) {
$book->delete();
return redirect(route("books.show"));
}
}
各メソッドとその役割は以下の通りです。
メソッド名 | 役割 |
showBook | booksテーブルの一覧を取得 show-booksビューではすべてのbookのidとtitleを表示 |
showDetailBook | bookの詳細を表示 show-detail-bookビューでは指定されたbookのidとtitle、author、priceを表示 |
createBook | create-bookビューを表示 |
storeBook | booksテーブルに新しいデータを追加 |
editBook | edit-bookビューを表示 |
updateBook | 指定したbooksテーブルの要素を更新 |
destroyBook | 指定したbooksテーブルの要素を削除 |
以上で、データの表示、作成、更新、削除のコントローラーを実装できました。
今回はデータベースの表示、作成、更新、削除のためのコントローラーを一通り実装しました。次回以降では、各ビューの作成やルーティングを行っていきます。