Laravelで簡易的なレストラン予約システムを作成しています。お店側が電話などで予約を取り、その情報の登録・更新処理をイメージしていただければと思います。ここで、配列に格納した情報をループで見ながらupdateOrCreateメソッドで処理を組んでいるのですが、更新処理は可能ですが登録処理では値が入りません。原因がわからないのでアドバイスいただけると光栄です。
PHP/Laravel
1### AdminController.phpの一部 ### 2 3 public function updateOrCreate(Request $request) 4 { 5 // 予約日 6 $date = session('date'); 7 // テーブル数 8 $tbl_cnt = Table::count(); 9 10 11 // 予約テーブル配列化 12 $up_rsvs = array( 13 'tbl_id' => $request->input('tbl_id'), 14 'time' => $request->input('time'), 15 'ppl' => $request->input('ppl'), 16 'r_name' => $request->input('r_name'), 17 'course_id' => $request->input('course_id'), 18 'tel' => $request->input('tel'), 19 'mail' => $request->input('mail'), 20 'memo' => $request->input('memo') 21 ); 22 for ($i=0; $i<$tbl_cnt; $i++) { 23 // テーブルIDが入力情報と合致するときは更新、登録 24 if (Reservation::where('tbl_id', $up_rsvs['tbl_id'][$i])->exists()) { 25 Reservation::updateOrCreate( 26 ['tbl_id' => $up_rsvs['tbl_id'][$i]], 27 [ 28 'time' => $up_rsvs['time'][$i], 29 'ppl' => $up_rsvs['ppl'][$i], 30 'name' => $up_rsvs['r_name'][$i], 31 'course_id' =>$up_rsvs['course_id'][$i], 32 'tel' => $up_rsvs['tel'][$i], 33 'mail' => $up_rsvs['mail'][$i], 34 'memo' => $up_rsvs['memo'][$i] 35 ] 36 ); 37 // } 38 } 39 } 40 // 予約日の曜日 41 $datetime = new DateTime($date); 42 $week = array("日", "月", "火", "水", "木", "金", "土"); 43 $w = (int)$datetime->format('w'); 44 $day_of_week = $week[$w]; 45 46 47 // 予約情報 48 $rsvs = Reservation::where('date', $date) 49 ->get(['tbl_id', 'date', 'time', 'ppl', 'reservations.name as r_name', 'course_id', 'tel', 'mail', 'memo']); 50 return view('admin/edit', compact('date', 'day_of_week', 'rsvs', 'tbl_cnt')); 51 } 52}
PHP/Laravel
1### edit.blade.phpの一部 ### 2 3<div class="container m-5 p-5"> 4 <h4 class="text-center mt-3">管理画面</h4> 5 <br><br> 6 <p class="text-right">{{ date('Y年n月j日', strtotime($date)).$day_of_week }}曜日</p> 7 <form method="get" action="{{ route('a.uc') }}"> 8 <div class="table-responsive"> 9 <table class="table table-bordered bg-white border-secondary"> 10 <thead class="text-center"> 11 <th class="border" height="40" width="60">座席</th> 12 <th width="90">予約時間</th> 13 <th width="60">人数</th> 14 <th width="140">名前</th> 15 <th width="160">コース</th> 16 <th width="140">電話番号</th> 17 <th width="160">メールアドレス</th> 18 <th width="400">メモ</th> 19 </thead> 20 <tbody class="text-left edit"> 21 @for($i=0; $i<$tbl_cnt; $i++) <tr> 22 <td height="40"><input name="tbl_id[]" type="text" value="{{ $i+1 }}" 23 style="border:none;"> 24 </td> 25 <td><input name="time[]" type="text" @if(!empty($rsvs[$i]['time'])) 26 value="{{ $rsvs[$i]['time'] }}" style="border:none;"> 27 @endif 28 </td> 29 <td><input name="ppl[]" type="text" @if(!empty($rsvs[$i]['ppl'])) 30 value="{{ $rsvs[$i]['ppl'] }}" style="border:none;"> 31 @endif</td> 32 <td><input name="r_name[]" type="text" @if(!empty($rsvs[$i]['r_name'])) 33 value="{{ $rsvs[$i]['r_name'] }}" style="border:none;"> 34 @endif</td> 35 <td><select name="course_id[]" class="course_select"> 36 <option></option> 37 <option value="1" @if(isset($rsvs[$i]['course_id']) && 38 $rsvs[$i]['course_id']==1 ) selected @endif> 39 焼鳥三昧コース</option> 40 <option value="2" @if(isset($rsvs[$i]['course_id']) && 41 $rsvs[$i]['course_id']==2 ) selected @endif> 42 串カツフルコース</option> 43 <option value="3" @if(isset($rsvs[$i]['course_id']) && 44 $rsvs[$i]['course_id']==3 ) selected @endif> 45 お刺身舟盛コース</option> 46 </select> 47 </td> 48 49 <td><input name="tel[]" type="text" @if(!empty($rsvs[$i]['tel'])) 50 value="{{ $rsvs[$i]['tel'] }}" style="border:none;"> 51 @endif</td> 52 <td><input name="mail[]" type="text" @if(!empty($rsvs[$i]['mail'])) 53 value="{{ $rsvs[$i]['mail'] }}" style="border:none;"> 54 @endif</td> 55 <td><input name="memo[]" type="text" @if(!empty($rsvs[$i]['memo'])) 56 value="{{ $rsvs[$i]['memo'] }}" style="border:none;"> 57 @endif</td> 58 </tr> 59 @endfor 60 </tbody> 61 </table> 62 </div> 63 <button type="submit" class="btn btn-primary btn-block btn-lg" 64 onclick="return confirm('予約情報を更新します。よろしいですか?');"> 65 {{ __('変更完了') }} 66 </button> 67 </form> 68 <br> 69 <form method="get" action="{{ route('a.cal') }}"> 70 <button type="submit" class="btn btn-secondary btn-block btn-lg"> 71 カレンダー画面に戻る 72 </button> 73 </form> 74</div>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。