前提・実現したいこと
laravel勉強中の初心者です。よろしくお願いします。
同じname属性のinputタグを使い、メッセージを登録し、更新したい
メッセージの登録(create)はできたのですが更新ができなくて困っています(全てnullになる)
発生している問題・エラーメッセージ
エラーメッセージはなく、更新処理をすると全てnullになります
該当のソースコード
$Messageにはあらかじめ登録されたメッセージが入っています。
html
1 2//edit画面 3<form action=""> 4 <tr> 5 <td><input class="form-control" name="receive_message_1[]" value='{{$Message->receive_message_1}}'></td> 6 <td><input class="form-control" name="receive_message_2[]" value='{{$Message->receive_message_2}}'></td> 7 <td><input class="form-control" name="receive_message_3[]" value='{{$Message->receive_message_3}}'></td> 8 </tr> 9 <tr> 10 <td><input class="form-control" name="receive_message_1[]" value='{{$Message->receive_message_1}}'></td> 11 <td><input class="form-control" name="receive_message_2[]" value='{{$Message->receive_message_2}}'></td> 12 <td><input class="form-control" name="receive_message_3[]" value='{{$Message->receive_message_3}}'></td> 13 </tr> 14</form>
このような感じで、おなじname属性のinputタグが2つづつ、計6つあります。このような時にはinputを配列にする必要がある、と見ましたので[]がついています。
laravel
1create画面のHTMLは上記とほぼ同じです(value部分がないだけ) 2create部分のコントローラーは以下のような感じです 3 4public function store(Request $request,Message $message){ 5 //メッセージ登録する:配列で値を受け取る 6 $data = array( 7 'receive_message_1' => $request->input('receive_message_1'), 8 'receive_message_2' => $request->input('receive_message_2'), 9 'receive_message_3' => $request->input('receive_message_3'), 10 ); 11 12 //dataを展開して値を入れた 13 $i = 0; 14 foreach ($data['receive_message_1'] as $d) { 15 $message = new Message; 16 $message->receive_message_1 = $request->receive_message_1[$i]; 17 $message->receive_message_2 = $request->receive_message_2[$i]; 18 $message->receive_message_3 = $request->receive_message_3[$i]; 19 $message->save(); 20 $i++; 21 } 22 return redirect('/'); 23 } 24 25 26 27 28public function update(Request $request, Message $message){ 29 30 // 配列で受け取る 31 $data = array( 32 'receive_message_1' => $request->input('receive_message_1'), 33 'receive_message_2' => $request->input('receive_message_2'), 34 'receive_message_3' => $request->input('receive_message_3'), 35 'created_at' => Carbon::now(), 36 'updated_at' => Carbon::now(), 37 ); 38//dataを展開して更新してみました、がうまくいかず 39 $i = 0; 40 foreach ($data['receive_message_1'] as $d) { 41 $message->receive_message_1 = $request->receive_message_1[$i]; 42 $message->receive_message_2 = $request->receive_message_2[$i]; 43 $message->receive_message_3 = $request->receive_message_3[$i]; 44 $message->save(); 45 $i++; 46 } 47 return redirect("/") 48}
試したこと
$message->receive_message_1や$request->input('receive_message_3')に値が入っていることは確認できましたが、更新がうまくいきません
補足情報(FW/ツールのバージョンなど)
laravel5.6、リソースコントローラー使用して構築しています
回答1件
あなたの回答
tips
プレビュー