laravelで作ったカレンダーのその日がデータを持っていたら文字色を変える処理を書きたい
Q&A
やりたいこと
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);
↑
下記のコードのこの辺り
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Controllers\ReservationController;
use Illuminate\Support\Facades\Auth;
class CalendarController extends Controller
{
public function loginPage(){
return view('loginPage');
}
//カレンダーの日付をクリックしてその日の予約状況を表示するメソッド
public function detailshow($today){
$reservation = \App\Models\Reservation::all();
$calendar = $reservation->pluck('calendar');
$todayReservations = \App\Models\Reservation::where("calendar",$today)->get();
return view('dayDetail',compact('reservation','today','calendar','todayReservations'));
}
//予約状況の名前をクリックしてそのユーザーの予約内容を表示する
public function showCustomer($id){
$customerDetail = \App\Models\Reservation::find($id);//ここでidを受け取って個人個人に振り分けてる
// dd($customerDetail->name);
return view('customer',compact('customerDetail'));
}
//カレンダーを表示されるメソッド
public function dayShow(Request $req){
//タイムゾーンの設定
date_default_timezone_set('Asia/Tokyo');
//前月・翌月ボタンが押された場合、GETパラメータから年月を取得
if(isset($_GET['ym'])){
$ym = $_GET['ym'];
} else {
//押されてなかったら今の年月を取得 (2019-07)
$ym = date('Y-m');
}
// dd($ym);→2021-03
//タイムスタンプを作成する
$timestamp = strtotime($ym . '-01'); //2019-07に"-01"を足している
if($timestamp == false){
$ym = date('Y-m');
$timestamp = strtotime($ym . '-01');
}
//↑これで$timestampは2019-07-01となる
// dd($timestamp);→1614524400
//今日の日付をセット (2019-07-13)
$today = date('Y-m-j');
// dd($today);→2021-03-8
//カレンダーのタイトルを設定 (2019年7月)
$title = date('Y年m月' , $timestamp);
// dd($title);→2021年03月
//前月・次月の年月を取得する
$prev = date('Y-m',strtotime('-1 month',$timestamp)); //2019-06
$next = date('Y-m',strtotime('+1 month',$timestamp)); //2019-08
// dd($prev);→2021-02
//該当の月の日数を取得 (31を取得)
$day_count = date('t',$timestamp);
// dd($day_count);→31
//曜日を取得 (1:月曜日を取得)
$youbi = date('w',$timestamp);
// dd($youbi);→1
//カレンダー作成の準備
$week = '';
$weeks = [];
//月初の曜日より前の曜日を空セルにする
$week .= str_repeat('<td></td>' , $youbi);
// dd($week);→<td></td>
$reservation = \App\Models\Reservation::all();
$calendars = $reservation->pluck('calendar');
// $todayReservations1 = \App\Models\Reservation::where("calendar","2021-03-25")->count();
// dd($todayReservations1);
$color = "green";
for($day = 1; $day <= $day_count; $day++,$youbi++){
$date = $ym . '-' . $day; //日にちを1日ずつ足していく
// dd($day);→1
//もし今日の日付だったらクラスをつける
if($today == $date){
$todayReservations1 = \App\Models\Reservation::where("calendar",$ym . '-' . $day)->count();
$todayReservations2 = \App\Models\Reservation::where("calendar",$ym . '-0' . $day)->count();
dd($todayReservations2);
echo $todayReservations1;
// $todayReservations1 = \App\Models\Reservation::where("calendar",$today)->count();
// $todayReservations2 = \App\Models\Reservation::where("calendar","2021-3-25")->count();
// $ym1 = "{{ $ym}} ";
if($day < 10){
// $reservation = \App\Models\Reservation::all();
// $calendars = $reservation->pluck('calendar');
// $todayReservations1 = \App\Models\Reservation::where("calendar",$date)->count();
// dd($todayReservations1);
// 二次元配列 オブジェクトのインスタンス レコードごと撮ってくるforeach 文字列型なら変える必要がある
if( $todayReservations1 < 1){
echo 'これは'.$color.'です①';
}else{
echo "不合格";
}
$week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-0'. $day.'">' . $day.'</a>';
}else {
if( $todayReservations1 < 1){
echo 'これは'.$color.'です②';
}else{
echo "不合格";
}
// dd($todayReservations1);
// foreach($calendars as $calendar){
// if($calendar == $ym. '-'. $day){
// }
// }
$week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-'. $day.'">' . $day.'</a>';
}
} else{
//今日以外の日付は普通に出力する
// $todayReservations1 = \App\Models\Reservation::where("calendar",$date)->get();
// $todayReservations2 = \App\Models\Reservation::where("calendar",$date2)->get();
// dd($todayReservations1);
if($day < 10){
if( $todayReservations2 < 1){
echo 'これは'.$color.'です③';
}else{
echo "不合格";
}
// foreach($calendars as $calendar){
// if($calendar == $ym. '-0'. $day){
// $color = "green";
// }
// }
$week .= '<td class="dayNumber">'. '<a href="dayDetail/' .$ym.'-0'. $day.'">'. $day.'</a>';
}else {
if( $todayReservations1 < 1){
echo 'これは'.$color.'です④';
}else{
echo "不合格";
}
// dd($todayReservations);
// foreach($calendars as $calendar){
// if($calendar == $ym. '-'. $day){
// $color = "green";
// }
// }
$week .= '<td class="today">'.'<a href="dayDetail/' .$ym. '-'. $day.'">' . $day.'</a>';
}
}
$week .= '</td>';
//週終わり・月終わりの処理(もし今日の日付が月の日数の最後の日付だったら)
if ($youbi % 7 == 6 || $day == $day_count) {
if ($day == $day_count) {
$week .= str_repeat('<td></td>', 6 - ($youbi % 7));
}
//$weeks(配列)の中に一週間分格納する
$weeks[]='<tr>' . $week . '</tr>';
$week = '';
}
}
return view('calendar',compact('prev','title','next','weeks','day','color','todayReservations1'));
}
//顧客を削除するメソッド
function destroy($id)
{
$reservation = \App\Models\Reservation::find($id);
$reservation->delete();
return redirect("/dayDetail/{$reservation->calendar}");
}
}
参考サイト
具体的な正解コードが分かる方、
よろしくお願い致します!
0