libro
www.tuyano.com
初心者のためのLaravel入門

ModelのCRUD (5/6)

作成:2016-02-28 08:54
更新:2016-02-28 08:54

■Controllerにupdateアクションを追加する

では、Controller側のアクションを作成しましょう。HeloControllerクラスに、下のリスト欄のメソッドを追加して下さい。そして修正できたら、実際にアクセスしてみましょう。

今回は、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 を呼び出せばテーブルのレコードが更新される、というわけです。

※プログラムリストが表示されない場合

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');
}

※関連コンテンツ

「初心者のためのLaravel入門」に戻る