質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

1回答

1092閲覧

laravelで作ったカレンダーのその日がデータを持っていたら文字色を変える処理を書きたい

Ichiro08

総合スコア8

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/03/24 23:11

編集2021/03/25 11:26

やりたいこと

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}

参考サイト

【Level3】PHP勉強:カレンダーの作成

具体的な正解コードが分かる方、
よろしくお願い致します!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

dd(2021-03-25);
を実行してみましょう。
1993です。
https://tinkervel.com/9PKNPD

投稿2021/03/25 03:08

mikkame

総合スコア5036

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ichiro08

2021/03/25 11:32

ありがとうございます! すみません、RUNしたら1993が返ってくるというのはわかるのですがどのような意味なのでしょか? 調べたのですがわかりませんでした。 2021-03-25は仮に入れて試したものでした。 $todayReservations1 = \App\Models\Reservation::where("calendar",$ym . '-' . $day)->count(); このように第2引数は変数にしたいです。 カレンダーに予約が入っている日だけを緑色のcolorにしたいです。 count()を使って、 もしその日にデータが0件だったら普通のcolor それ以外はgreenにする というような処理をしたいです。 そんな感じで試している残骸がある乱れたコードですが、 今いじっている最新のものに更新しておきました。 色々試しているのですが、 $ym . '-' . $day を使うとうまくデータがとれません。 なにかお気づきになることなどありますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問