データの新規登録方法
前回でデータの新規登録方法を見てきました。しかしながら、データをブラウザから入力する処理までは実装していません。ブラウザからデータを入力するためには、Postメソッドとビューの作成が必要になります。
Postメソッド
HTTPでは、いくつかのメソッドが定義されています。その一つがPostメソッドです。Postメソッドはデータベースに新たな値を登録するときに使用されます。通常のURLへのアクセスはGetメソッドと呼ばれ、データを送信するにはURLに直接追加する必要がありました。一方でPostメソッドはリクエストボディというところにデータを格納することができ、それを使用してブラウザとWebサーバーが通信できます。
ビューの作成
ブラウザから値を送信するためにビューを新たに作成します。resources/viewに新たに、create-item.blade.phpを作成します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Itemsの新規追加</title>
</head>
<body>
<form action="{{ route('items.store') }}" method="POST">
@csrf
<p>name</p>
<input type="text" name="name">
<button type="submit">送信</button>
</form>
</body>
</html>
formタグにはactionとmethodがあり、actionはフォームの送信先を設定します。route関数はLaravelの関数で、ルーティングで付けた名前をもとに対応するURLを処理してくれます。methodはHTTPメソッドでPostを選択しています。@csrfはLaravelの標準のセキュリティ機能であり、これがないとエラーが発生します。
次に、コントローラーを記述します。HelloController.phpに以下の関数を追加します。
public function showCreateItem() {
return view("create-item");
}
public function storeItem(Request $request) {
Item::create([
"name" => $request->input("name"),
]);
return redirect()->route("items.create");
}
showAddItem関数はadd-itemビューを表示するための関数で、storeItem関数はItemsテーブルに値を保存し、items.addと名前を付けられたURLを返します。これは、add-itemビューを表示するURLと同じものになります。Requestはブラウザから送信されたリクエストを保持するもので、inputメソッドで、保存されている値を取得できます。
次に、web.phpにルートを記述します。以下のように記述します。
Route::controller(HelloController::class)->group(function () {
Route::get("/add-item-from-form", "showCreateItem")->name("items.create");
Route::post("/add-item-from-form", "storeItem")->name("items.store");
});
ここでcontrollerは使用するコントローラーを指定する関数であり、groupは第一引数に取った関数をグループ化するもので、複数の処理を同じコントローラーで記述したときに使用すると便利な関数です。name関数はルートに名前を付ける機能であり、これを使用することで、簡単にルートを指定できます。
以上の設定が終わったら、http://localhost/add-item-from-formにアクセスします。nameと表示された下に資格の入力画面と送信ボタンが表示されれば成功です。入力画面に好きな値を入れて、送信ボタンをクリックします。MySQLで確認すると送信した値が追加されていることがわかります。確認するには以下のコマンドを使用します。
select * from items;
以上で、データベースの新規作成が行えるようになりました。しかし、これではまだ、データベースを操作できるようになったとは言えません。データベースは登録以外に、取得、更新、削除、検索などがあります。これ以降では、データベースの取得、更新、削除、検索などデータベースの様々な操作について解説します。