ModelのCRUD (5/6)
作成:2016-02-28 08:54
更新:2016-02-28 08:54
更新:2016-02-28 08:54
■Controllerにupdateアクションを追加する
では、Controller側のアクションを作成しましょう。HeloControllerクラスに、下のリスト欄のメソッドを追加して下さい。そして修正できたら、実際にアクセスしてみましょう。
今回は、updateアクションに「id」というクエリーパラメータを付けてアクセスするようにしてあります。例えば、
こんな具合にアクセスすると、IDが1番のレコードの内容がフォームに表示されます。そのまま値を書き換えて送信すれば、レコードの内容が更新されます。
ここでは、getUpdateで指定のIDのレコードを検索して$dataに保存しています。これは、こんな具合に行っています。
「find」というメソッドは、引数に指定したIDのレコードを取得し、Modelインスタンスとして返します。IDでレコード検索をすることはよくありますから、これはしっかり覚えておきましょう。
postUpdateでは、findでレコードを検索した後、送信されたフォームの値を設定してsaveしています。
Modelの値は、こんな具合にModelのプロパティとして用意されていますから、その値を設定するだけで内容を変更できます。そして、save を呼び出せばテーブルのレコードが更新される、というわけです。
今回は、updateアクションに「id」というクエリーパラメータを付けてアクセスするようにしてあります。例えば、
http://localhost:8000/helo/update?id=1
こんな具合にアクセスすると、IDが1番のレコードの内容がフォームに表示されます。そのまま値を書き換えて送信すれば、レコードの内容が更新されます。
ここでは、getUpdateで指定のIDのレコードを検索して$dataに保存しています。これは、こんな具合に行っています。
$id = $request->id;
$data = MyTable::find($id);
「find」というメソッドは、引数に指定したIDのレコードを取得し、Modelインスタンスとして返します。IDでレコード検索をすることはよくありますから、これはしっかり覚えておきましょう。
postUpdateでは、findでレコードを検索した後、送信されたフォームの値を設定してsaveしています。
$data->name = $request->input('name');
$data->mail = $request->input('mail');
$data->age = $request->input('age');
$data->save();
Modelの値は、こんな具合にModelのプロパティとして用意されていますから、その値を設定するだけで内容を変更できます。そして、save を呼び出せばテーブルのレコードが更新される、というわけです。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
public function getUpdate(Request $request) { $id = $request->id; $data = MyTable::find($id); $msg = 'MyTable Update [id = ' . $id . ']'; return view('update', ['message' => $msg,'data' => $data]); } public function postUpdate(Request $request) { $id = $request->input('id'); $data = MyTable::find($id); $data->name = $request->input('name'); $data->mail = $request->input('mail'); $data->age = $request->input('age'); $data->save(); return redirect()->action('HeloController@getIndex'); }
※関連コンテンツ