前提・実現したいこと
初めての質問なので何か誤りがございいましたら申し訳ございません。
テーブルから取得したデータ(祝祭日の日付)のフォント色を赤色に変更する処理
ログインした社員の出勤日付データに祝祭日があったら日付と曜日を赤色にする
利用テーブル=>2テーブル
(PHP(Laravel)で勉強して勤怠管理みたいなウェブサイトを作っています。
該当のソースコード
WorkTimeReferenceRepository.php
1<?php 2 3namespace App\Repositories\Work_Time; 4 5use Illuminate\Http\Request; 6use App\Models\MT08Holiday; 7use App\Models\TR01Work; 8use App\Models\MT99Msg; 9use Illuminate\Support\Facades\DB; 10 11class WorkTimeReferenceRepository 12{ 13 /** 14 * 勤務状況照会(個人用) 処理 15 *ヘッダーの検索条件表示 16 * @return WorkTimeReferenceController 17 */ 18 public function empInput(Request $request) 19 { 20 $inputEmpData = $request->all(); 21 $nationalClsd = MT08Holiday::get('HLD_DATE'); 22 $empWorkTimeResults = TR01Work::select( 23 'TR01_WORK.*', 24 'MT05_WORKPTN.WORKPTN_NAME', 25 'MT05_WORKPTN.WORK_CLS_CD', 26 'MT09_REASON.REASON_NAME', 27 'MT09_REASON.REASON_PTN_CD', 28 // 'MT08_HOLIDAY.HLD_DATE' 29 ) 30 ->join('MT05_WORKPTN', 'TR01_WORK.WORKPTN_CD', 'MT05_WORKPTN.WORKPTN_CD') 31 ->join('MT09_REASON', 'TR01_WORK.REASON_CD', 'MT09_REASON.REASON_CD') 32 ->join('MT10_EMP', 'TR01_WORK.EMP_CD', 'MT10_EMP.EMP_CD') 33 ->where('CALD_YEAR', $inputEmpData['ddlTargetYear']) 34 ->where('CALD_MONTH', $inputEmpData['ddlTargetMonth']) 35 ->where('TR01_WORK.EMP_CD', $inputEmpData['txtEmpCd']) 36 ->where('MT10_EMP.REG_CLS_CD', '=', '00') 37 ->selectRaw("Case When TR01_WORK.OFC_TIME_HH Is Null THEN '' 38 Else Cast(TR01_WORK.OFC_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.OFC_TIME_MI As VarChar), 2) 39 End As OFC_TIME") 40 ->selectRaw("Case When TR01_WORK.LEV_TIME_HH Is Null Then '' 41 Else Cast(TR01_WORK.LEV_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.LEV_TIME_MI As VarChar), 2) 42 End As LEV_TIME") 43 ->selectRaw("Case When TR01_WORK.OUT1_TIME_HH Is Null Then '' 44 Else Cast(TR01_WORK.OUT1_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.OUT1_TIME_MI As VarChar), 2) 45 End As OUT1_TIME") 46 ->selectRaw("Case When TR01_WORK.IN1_TIME_HH Is Null Then '' 47 Else Cast(TR01_WORK.IN1_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.IN1_TIME_MI As VarChar), 2) 48 End As IN1_TIME") 49 ->selectRaw("Case When TR01_WORK.OUT2_TIME_HH Is Null Then '' 50 Else Cast(TR01_WORK.OUT2_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.OUT2_TIME_MI As VarChar), 2) 51 End As OUT2_TIME") 52 ->selectRaw("Case When TR01_WORK.IN2_TIME_HH Is Null Then '' 53 Else Cast(TR01_WORK.IN2_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.IN2_TIME_MI As VarChar), 2) 54 End As IN2_TIME") 55 ->selectRaw("Case When TR01_WORK.WORK_TIME_HH + TR01_WORK.WORK_TIME_MI = 0 Then '' 56 Else Cast(TR01_WORK.WORK_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.WORK_TIME_MI As VarChar), 2) 57 End AS WORK_TIME") 58 ->selectRaw("Case When TR01_WORK.TARD_TIME_HH + TR01_WORK.TARD_TIME_MI = 0 Then '' 59 Else Cast(TR01_WORK.TARD_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.TARD_TIME_MI As VarChar), 2) 60 End AS TARD_TIME") 61 ->selectRaw("Case When TR01_WORK.LEAVE_TIME_HH + TR01_WORK.LEAVE_TIME_MI = 0 Then '' 62 Else Cast(TR01_WORK.LEAVE_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.LEAVE_TIME_MI As VarChar), 2) 63 End AS LEAVE_TIME") 64 ->selectRaw("Case When TR01_WORK.OUT_TIME_HH + TR01_WORK.OUT_TIME_MI = 0 Then '' 65 Else Cast(TR01_WORK.OUT_TIME_HH As VarChar) + ':' + RIGHT('00' + Cast(TR01_WORK.OUT_TIME_MI As VarChar), 2) 66 End AS OUT_TIME") 67 ->get(); 68 69 // dd($empWorkTimeResults); 70 return $empWorkTimeResults; 71 } 72 73 public function calHolidayDate() 74 { 75 $weekday = array("日", "月", "火", "水", "木", "金", "土"); 76 return $weekday; 77 } 78 79 public function officeClsd(Request $request) 80 { 81 $dateColor = ''; 82 $nationalClsds = MT08Holiday::get('HLD_DATE'); 83 // dd($nationalClsd); 84 85 86 return $nationalClsds; 87 } 88 89 } 90} 91 92``WorkTimeReferenceController.php 93<?php 94 95namespace App\Http\Controllers\Work_Time; 96 97use App\Http\Controllers\Controller; 98use Illuminate\Support\Facades\DB; 99use Illuminate\Http\Request; 100use App\Http\Requests\WorkTimeReferenceRequest; 101use App\Repositories\Work_Time\WorkTimeReferenceRepository; 102use App\Models\TR01Work; 103use App\Models\MT99Msg; 104 105class WorkTimeReferenceController extends Controller 106{ 107 108 /** 109 * $wtRef_Repositoryリポジトリの実装 110 * 111 * @var WorkTimeReferenceRepository 112 */ 113 protected $wtRef_Repository; 114 115 /** 116 * 新しいコントローラインスタンスの生成 117 * 118 * @param WorkTimeReferenceRepository $wtRef_Repository 119 * @return void 120 */ 121 public function __construct(WorkTimeReferenceRepository $wtRef_Repository) 122 { 123 $this->wtRef_Repository = $wtRef_Repository; 124 } 125 126 /** 127 * 勤務状況照会(個人用) 処理 128 * 129 * @return view 130 */ 131 public function search(WorkTimeReferenceRequest $request) 132 { 133 $empWorkTimeResults = $this->wtRef_Repository->empInput($request); 134 // dd($empWorkTimeResults); 135 136 $errMsg_4029 = $this->wtRef_Repository->messages(); 137 //dd($msg_4029); 138 139 $weekday = $this->wtRef_Repository->calHolidayDate(); 140 // $nationalClsd = $this->wtRef_Repository->nationalClsday(); 141 $officeClsds = $this->wtRef_Repository->officeClsd($request); 142 // $dateColor = $this->wtRef_Repository->officeClsd($request); 143 // dd($officeClsd); 144 return view('work_time.WorkTimeReference', compact('empWorkTimeResults', 'weekday', 'errMsg_4029','officeClsds')); 145 } 146} 147 148``WorkTimeReference.blade.php 149@foreach ($officeClsds as $officeClsd ) 150 151 @foreach ($empWorkTimeResults as $empWorkTimeResult) 152 <tr> 153 @if ($officeClsd->HLD_DATE == $weekday[date('md',strtotime($empWorkTimeResult->CALD_DATE))] || 154 $weekday[date('w',strtotime($empWorkTimeResult->CALD_DATE))] == '日' || 155 $weekday[date('w',strtotime($empWorkTimeResult->CALD_DATE))] == '土') 156 <td style="width: 70px;"> 157 <span id="lblCaldDate" 158 style="width: 70px; display: inline-block; color: red"> 159 {{ date('Y/m/d', strtotime($empWorkTimeResult->CALD_DATE)) }} 160 </span> 161 </td> 162 <td style="width: 30px;"> 163 <span id="lblCaldDate" 164 style="width: 30px; display: inline-block; color: red"> 165 {{ $weekday[date('w', strtotime($empWorkTimeResult->CALD_DATE))] }} 166 </span> 167 </td> 168 @else 169 <td style="width: 70px;"> 170 <span id="lblCaldDate" style="width: 70px; display: inline-block;"> 171 {{ date('Y/m/d', strtotime($empWorkTimeResult->CALD_DATE)) }} 172 </span> 173 </td> 174 <td style="width: 30px;"> 175 <span id="lblCaldDate" style="width: 30px; display: inline-block;"> 176 {{ $weekday[date('w', strtotime($empWorkTimeResult->CALD_DATE))] }} 177 </span> 178 </td> 179 @endif
試したこと
①ログインした社員の出勤日付データをテーブルから取得しコントローラーから画面に渡し=>画面側foreach文で回して表示しました。
②その表示してる日付の中祝祭日があれば日付と曜日のフォント色赤色にする=>foreach文で回して試しました。
何か他の方法がございますでしょうか?
◆結果
・社員出勤日データ表示Foreachの中に祝祭日データをForeachで回して、If文で「出勤日データの中祝祭日があったらフォント色赤に変更する」条件でチャックしましたがうまくいかなかった。
・二重ループを使って出勤日データ「2017-09-26 00:00:00.000」フォーマットを「月/日」フォーマットに変更し、祝祭日データ「0101」を「月/日」フォーマットに変更しIf文でチャックをしました。チャック処理が成功しましたが、ループが「出勤日データ」の分と「祝祭日データ」の分も回してしまいました。
補足情報(FW/ツールのバージョンなど)
テーブル二つの結合でも試したがループがうまく反映されませんでした。
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー