12.
レコード更新・削除
データ更新
find()
find() は指定した「id」からレコードを1件取得するメソッドです。
SQL
update()
update() はレコード更新するメソッドで、データは連想配列で指定します。
すべてのレコードを更新
条件を指定しない場合は、すべてのレコードを更新されるので注意が必要です。
SQL
where()
where() は、SQLのWHERE句を追加するメソッドです。
オプションなしの場合
where() のオプションがない場合は、条件が = で実行されます。
SQL
WHEREで更新
レコード更新は通常WHEREで条件指定しますが、Eloquentではメソッドチェーンでコーディングできます。
SQL
セッション(Flash)
old()
old() は前回入力したセッションデータを取得するヘルパーメソッドです。セッションは1度だけ有効なFlashとして処理されます。
データ送信とセッション
old() を利用すると、第1引数はセッションデータ(Flash)、第2引数はモデルデータ(DBデータ)で表示できます。
商品編集
商品データ取得
ItemControllerのedit() で「items」テーブルから1件取得します。
ItemController.php
商品編集画面
フォーム追加
「item/edit.blade.php」にフォームを追加します。商品名と価格のvalueプロパティには、old() で設定します。
item/edit.blade.php
フォーム送信URL
フォームのactionは「item/update/{id}」の形式で設定します。
item/edit.blade.php
- route() の第2引数に値を指定すると、自動的にパスパラメータが生成
レコード更新
ルーティング
POSTリクエスト「/item/update/{id}」をルーティングします。
web.php
レコード更新処理
トークン削除
ItemControllerのupdate() ではリクエストデータ取得します。データにはCSRF処理対策の「_token」データが含まれているため、事前に削除しておきます。
ItemController.php
レコード更新
商品データの更新し、編集画面にリダイレクトします。
ItemController.php
- 編集画面へのリダイレクトURLには「items.id」が必要です。
レコード削除
destroy()
destroy() はレコード削除するメソッドで、基本的にはテーブルのidを指定します。
SQL
delete()
delete() は、選択したレコードを削除するメソッドです。where() と併用して実行します。
SQL
レコード削除処理
Rouging
POSTリクエスト「/item/destroy/{id}」をルーティングします。
web.php
Controller
商品データを削除し、処理後は「item/index」にリダイレクトします。
ItemController.php
View
「edit.blade.php」にフォームボタンを追加し、「item/destroy/{id}」にPOSTリクエストします。
edit.blade.php
動作確認
削除処理の動作確認をしてみましょう。
