発生している問題・エラーメッセージ
foreachが2回回っているかのような現象が起きてしまっています。何故<p>タグ部分が2回出力されているのかが分かりません。
以下は該当のソースコードを実行した結果になります
該当のソースコード
php
1<table class="calender_table"> 2 <thead> 3 <tr class="day"> 4 @foreach (['日', '月', '火', '水', '木', '金', '土'] as $dayOfWeek) 5 @if($loop->first) 6 <th class="sunday">{{ $dayOfWeek }}</th> 7 @elseif($loop->last) 8 <th class="saturday">{{ $dayOfWeek }}</th> 9 @else 10 <th>{{$dayOfWeek}}</th> 11 @endif 12 @endforeach 13 </tr> 14 </thead> 15 <tbody> 16 @foreach($dates as $date) 17 18 @if($date->dayOfWeek == 0) 19 <tr> 20 @endif 21 <td> 22 @if($date->month == $current_date->month) 23 {{$date->day}} 24 @endif 25 26 @foreach($current_reserved_date as $reserved_date) 27 28 @if($date->day == $reserved_date->day) 29 30 <p>予約されています</p> 31 32 @else 33 34 <p>空室</p> 35 36 @endif 37 38 @endforeach 39 </td> 40 @if($date->dayOfWeek == 6) 41 </tr> 42 @endif 43 @endforeach 44 </tbody> 45 46 </table>
php
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use Carbon\Carbon; 7use App\Reservation; 8class Reservecontroller extends Controller 9{ 10 // 11 12 13 public function getCalendarDates($year, $month) 14 { 15 $date = Carbon::parse("$year-$month-1")->locale('ja_JP'); 16 // dd($date); 17 $last = $date->copy()->startOfWeek(); 18 $count = $last->diffInDays($date->copy()->endOfMonth()->endOfWeek()) + 1; 19 // dd($count,$date); 20 for ($i = 0; $i < $count; $i++, $last->addDay()) { 21 $dates[] = $last->copy(); 22 } 23 24 return $dates; 25 26 } 27 28 public function reserve_date() 29 { 30 $current_date = new Carbon(); 31 $current_year = $current_date->year; 32 $current_month = $current_date->month; 33 $dates = $this->getCalendarDates($current_year,$current_month); 34 $reservations = Reservation::get(['reservation_date']); 35 $reservations_array = $reservations->toArray(); 36 // var_dump($reservations_array); 37 // dd(); 38 foreach($reservations_array as $key=> $value ){ 39 $reserved_date[] = Carbon::parse($value['reservation_date']); 40 if($reserved_date[$key]->month == $current_month){ 41 $current_reserved_date[] = $reserved_date[$key]; 42 } 43 } 44 45 46 // foreach($current_reserved_date) 47 48 // dd($current_reserved_date,$dates); 49 50 51 return view('reserve.calender',compact('dates','current_date','current_reserved_date')); 52 53 } 54 55} 56
試したこと
以下はコントローラーファイルで「dd($current_reserved_date,$dates);」とした際の実行結果です。
上から$current_reserved_date,$datesの実行結果になります。
補足情報(FW/ツールのバージョンなど)
laravel5.8
windows10
回答2件
あなたの回答
tips
プレビュー