やりたいこと
laravelで作ったカレンダーのその日がデータを持っていたら文字色を変える処理を書きたい
・ カレンダーの日付をクリックすると予約フォームから送られてきたデータが入っている
発生している問題
・その日をaタグで囲っている
・データを\App\Models\Reservationから取得できない
・ \App\Models\Reservation::where("calendar", 2021-03-25)->get();の第2引数を$ym. '-0'. $dayにしてもできない
・色々試しているのでコード乱れていてすみません。普通にカレンダーとして作動はできています。
if($today == $date){ $ym1 = "{{ $ym}} "; if($day < 10){ $todayReservations = \App\Models\Reservation::where("calendar", 2021-03-25)->get(); dd($todayReservations);
↑
下記のコードのこの辺り
laravel
1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Http\Controllers\ReservationController; 7use Illuminate\Support\Facades\Auth; 8 9class CalendarController extends Controller 10{ 11 public function loginPage(){ 12 return view('loginPage'); 13 } 14//カレンダーの日付をクリックしてその日の予約状況を表示するメソッド 15 public function detailshow($today){ 16 $reservation = \App\Models\Reservation::all(); 17 $calendar = $reservation->pluck('calendar'); 18 $todayReservations = \App\Models\Reservation::where("calendar",$today)->get(); 19 return view('dayDetail',compact('reservation','today','calendar','todayReservations')); 20 } 21 22//予約状況の名前をクリックしてそのユーザーの予約内容を表示する 23 public function showCustomer($id){ 24 $customerDetail = \App\Models\Reservation::find($id);//ここでidを受け取って個人個人に振り分けてる 25 // dd($customerDetail->name); 26 return view('customer',compact('customerDetail')); 27 } 28 29//カレンダーを表示されるメソッド 30 public function dayShow(Request $req){ 31 //タイムゾーンの設定 32 date_default_timezone_set('Asia/Tokyo'); 33 34 //前月・翌月ボタンが押された場合、GETパラメータから年月を取得 35 if(isset($_GET['ym'])){ 36 $ym = $_GET['ym']; 37 } else { 38 //押されてなかったら今の年月を取得 (2019-07) 39 $ym = date('Y-m'); 40 } 41 // dd($ym);→2021-03 42 //タイムスタンプを作成する 43 $timestamp = strtotime($ym . '-01'); //2019-07に"-01"を足している 44 if($timestamp == false){ 45 $ym = date('Y-m'); 46 $timestamp = strtotime($ym . '-01'); 47 } 48 //↑これで$timestampは2019-07-01となる 49 // dd($timestamp);→1614524400 50 51 //今日の日付をセット (2019-07-13) 52 $today = date('Y-m-j'); 53 // dd($today);→2021-03-8 54 55 //カレンダーのタイトルを設定 (2019年7月) 56 $title = date('Y年m月' , $timestamp); 57 // dd($title);→2021年03月 58 59 //前月・次月の年月を取得する 60 $prev = date('Y-m',strtotime('-1 month',$timestamp)); //2019-06 61 $next = date('Y-m',strtotime('+1 month',$timestamp)); //2019-08 62 // dd($prev);→2021-02 63 64 65 //該当の月の日数を取得 (31を取得) 66 $day_count = date('t',$timestamp); 67 // dd($day_count);→31 68 69 //曜日を取得 (1:月曜日を取得) 70 $youbi = date('w',$timestamp); 71 // dd($youbi);→1 72 73 //カレンダー作成の準備 74 $week = ''; 75 $weeks = []; 76 77 //月初の曜日より前の曜日を空セルにする 78 $week .= str_repeat('<td></td>' , $youbi); 79 // dd($week);→<td></td> 80 81 $reservation = \App\Models\Reservation::all(); 82 $calendars = $reservation->pluck('calendar'); 83 // $todayReservations1 = \App\Models\Reservation::where("calendar","2021-03-25")->count(); 84 // dd($todayReservations1); 85 86 87 $color = "green"; 88 89 90 for($day = 1; $day <= $day_count; $day++,$youbi++){ 91 $date = $ym . '-' . $day; //日にちを1日ずつ足していく 92 93 // dd($day);→1 94 //もし今日の日付だったらクラスをつける 95 if($today == $date){ 96 $todayReservations1 = \App\Models\Reservation::where("calendar",$ym . '-' . $day)->count(); 97 $todayReservations2 = \App\Models\Reservation::where("calendar",$ym . '-0' . $day)->count(); 98 dd($todayReservations2); 99 echo $todayReservations1; 100 // $todayReservations1 = \App\Models\Reservation::where("calendar",$today)->count(); 101 // $todayReservations2 = \App\Models\Reservation::where("calendar","2021-3-25")->count(); 102 103 // $ym1 = "{{ $ym}} "; 104 105 if($day < 10){ 106 // $reservation = \App\Models\Reservation::all(); 107 // $calendars = $reservation->pluck('calendar'); 108 // $todayReservations1 = \App\Models\Reservation::where("calendar",$date)->count(); 109 // dd($todayReservations1); 110 111 // 二次元配列 オブジェクトのインスタンス レコードごと撮ってくるforeach 文字列型なら変える必要がある 112 if( $todayReservations1 < 1){ 113 echo 'これは'.$color.'です①'; 114 115 }else{ 116 echo "不合格"; 117 118 } 119 120 $week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-0'. $day.'">' . $day.'</a>'; 121 }else { 122 if( $todayReservations1 < 1){ 123 echo 'これは'.$color.'です②'; 124 125 }else{ 126 echo "不合格"; 127 128 } 129 130 // dd($todayReservations1); 131 // foreach($calendars as $calendar){ 132 // if($calendar == $ym. '-'. $day){ 133 // } 134 // } 135 $week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-'. $day.'">' . $day.'</a>'; 136 } 137 138 } else{ 139 //今日以外の日付は普通に出力する 140 // $todayReservations1 = \App\Models\Reservation::where("calendar",$date)->get(); 141 // $todayReservations2 = \App\Models\Reservation::where("calendar",$date2)->get(); 142 // dd($todayReservations1); 143 144 if($day < 10){ 145 if( $todayReservations2 < 1){ 146 echo 'これは'.$color.'です③'; 147 148 }else{ 149 echo "不合格"; 150 151 } 152 153 // foreach($calendars as $calendar){ 154 // if($calendar == $ym. '-0'. $day){ 155 // $color = "green"; 156 // } 157 // } 158 $week .= '<td class="dayNumber">'. '<a href="dayDetail/' .$ym.'-0'. $day.'">'. $day.'</a>'; 159 }else { 160 if( $todayReservations1 < 1){ 161 echo 'これは'.$color.'です④'; 162 163 }else{ 164 echo "不合格"; 165 166 } 167 168 // dd($todayReservations); 169 170 // foreach($calendars as $calendar){ 171 // if($calendar == $ym. '-'. $day){ 172 // $color = "green"; 173 // } 174 // } 175 $week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-'. $day.'">' . $day.'</a>'; 176 } 177 } 178 $week .= '</td>'; 179 180 //週終わり・月終わりの処理(もし今日の日付が月の日数の最後の日付だったら) 181 if ($youbi % 7 == 6 || $day == $day_count) { 182 if ($day == $day_count) { 183 $week .= str_repeat('<td></td>', 6 - ($youbi % 7)); 184 } 185 186 //$weeks(配列)の中に一週間分格納する 187 $weeks[]='<tr>' . $week . '</tr>'; 188 $week = ''; 189 } 190 } 191 return view('calendar',compact('prev','title','next','weeks','day','color','todayReservations1')); 192 } 193 //顧客を削除するメソッド 194 function destroy($id) 195 { 196 $reservation = \App\Models\Reservation::find($id); 197 $reservation->delete(); 198 return redirect("/dayDetail/{$reservation->calendar}"); 199 } 200 201}
参考サイト
具体的な正解コードが分かる方、
よろしくお願い致します!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/25 11:32