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

ModelのCRUD (3/6)

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

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

続いて、Controller側の修正です。今回は、/helo/newにアクセスすると先ほどのnew.phpのフォームを表示し、送信すると同じnewでレコードの追加を行う、というように作成をします。ということは、HeloControllergetNewpostNewというメソッドを追加すればいいことになります。

下にサンプルコードを掲載しておきました。こんな形でメソッドをHeloControllerクラスに追加して下さい。そして、http://localhost:8000/helo/new にアクセスしてフォームを送信してみましょう。新しいレコードが追加されます。

では、コードを見てみましょう。postNewで、送信されたフォームを元にレコードの追加を行っています。新規作成はcreateメソッドですから、MyTableの場合は、「MyTable::create~」とすればいいわけですね。

問題は、引数に指定する「データ」です。これは、項目名と値を連想配列としてまとめたものを用意します。例えば、MyTableでは、name, mail, ageといった項目が用意されていますね。したがってデータは、
array('name'=>名前, 'mail=>メール, 'age'=>年齢);

こんな形で連想配列を用意し、それを引数にしてやればいい、というわけです。リストでは、送信されたフォームの値を元に連想配列を作成しています。
$name = $request->input('name');
$mail = $request->input('mail');
$age = $request->input('age');
$data = array(
    'name' => $name,
    'mail' => $mail,
    'age' => $age
);

後は、MyTable::create($data); で新規作成すればいい、というわけです。連想配列の構造さえ間違えなければ、それほど難しくはありませんね。

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

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

public function getNew(Request $request)
{
    return view('new', ['message' => 'MyTable Create']);
}

public function postNew(Request $request)
{
    $name = $request->input('name');
    $mail = $request->input('mail');
    $age = $request->input('age');
    $data = array(
        'name' => $name,
        'mail' => $mail,
        'age' => $age
    );
    MyTable::create($data);
    return redirect()->action('HeloController@getIndex');
}

※関連コンテンツ

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