ModelのCRUD (3/6)
作成:2016-02-28 08:51
更新:2016-02-28 08:51
更新:2016-02-28 08:51
■Controllerにnewアクションを追加する
続いて、Controller側の修正です。今回は、/helo/newにアクセスすると先ほどのnew.phpのフォームを表示し、送信すると同じnewでレコードの追加を行う、というように作成をします。ということは、HeloControllerにgetNewとpostNewというメソッドを追加すればいいことになります。
下にサンプルコードを掲載しておきました。こんな形でメソッドをHeloControllerクラスに追加して下さい。そして、http://localhost:8000/helo/new にアクセスしてフォームを送信してみましょう。新しいレコードが追加されます。
では、コードを見てみましょう。postNewで、送信されたフォームを元にレコードの追加を行っています。新規作成はcreateメソッドですから、MyTableの場合は、「MyTable::create~」とすればいいわけですね。
問題は、引数に指定する「データ」です。これは、項目名と値を連想配列としてまとめたものを用意します。例えば、MyTableでは、name, mail, ageといった項目が用意されていますね。したがってデータは、
こんな形で連想配列を用意し、それを引数にしてやればいい、というわけです。リストでは、送信されたフォームの値を元に連想配列を作成しています。
後は、MyTable::create($data); で新規作成すればいい、というわけです。連想配列の構造さえ間違えなければ、それほど難しくはありませんね。
下にサンプルコードを掲載しておきました。こんな形でメソッドを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); で新規作成すればいい、というわけです。連想配列の構造さえ間違えなければ、それほど難しくはありませんね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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'); }
※関連コンテンツ