我正在嘗試制定時間管理計劃。表是這樣的:
Days | Start | End
Monday | 08:00 | 11:00
Tuesday | 07:00 | 12:00
...
即使在資料庫中沒有資料,我也想繼續顯示從Monday到到的天數Sunday。
我希望結果是這樣的:
Days | Start | End |
Monday | 08:00 | 11:00 |
Tuesday | 07:00 | 12:00 |
...
Sunday | - | - | // if there's no sunday data in database it still
// showing sunday but the start & end is empty
也有可能查詢的結果為空,因此最終會出錯,因為稍后在視圖中使用 foreach 時,變數內部沒有任何值。
這是我的控制器:
$work_hours = AttendanceGroupWorkHour::where('attendance_group_id', $id)->get();
這是我的觀點:
@foreach ($work_hours as $work_hour)
<tr>
<td>
{{ $work_hour->days)
</td>
<td>
{{ $work_hour->start)
</td>
<td>
{{ $work_hour->end)
</td>
</tr>
</tbody>
@endforeach
對不起,但我真的不知道該怎么做。任何幫助都會對我有所幫助。
uj5u.com熱心網友回復:
而不是迭代$work_hours,這可能會丟失您想要顯示的天數,而是迭代一周中的幾天(或開始/結束之間的日期,無論您在做什么)。作為演示,讓我們重復本周。
在您的控制器中:
// First step is to make your $work_hours addressable. Use keyBy()
// so that we can do something like $work_hours['Monday'].
$work_hours = AttendanceGroupWorkHour::where('attendance_group_id', $id)
->get()
->keyBy('days');
// Now let's build an array of every day this week - you would have
// to adjust this to match the dates in $work_hours.
$days = [];
$start = Carbon::now()->startOfWeek();
$end = Carbon::now()->endOfWeek();
for ($day = $start->copy(); $day->lte($end); $day->addDay()) {
$days[] = $day->format('l'); // Eg "Monday"
}
// Now pass the full set of days to the view, along with your "data" days:
return view('some.view', [
'days' => $days,
'work_hours' => $work_hours
]);
現在在你看來:
@foreach ($days as $day)
<tr>
<td>{{ $day }}</td>
<td>@if (isset($work_hours[$day]) {{ $work_hours[$day]->start }} @endif</td>
<td>@if (isset($work_hours[$day]) {{ $work_hours[$day]->end }} @endif</td>
</tr>
@endforeach
uj5u.com熱心網友回復:
我喜歡盡可能在后端保留邏輯。我沒有測驗它,但這應該可以作業,您可以使用相同的視圖實作。
$workDays = AttendanceGroupWorkHour::where('attendance_group_id', $id)->get()->keyBy('days'); //make sure only 1 week is returned Monday to Sunday, would be better to add to your query a where clause
$daysOfWeek = ['Monday' => 0, 'Tuesday' => 1, 'Wednesday' => 2, 'Thursday' => 3, 'Friday' => 4, 'Saturday' => 5, 'Sunday' => 6];
$scheduledDays = [];
foreach($daysOfWeek as $dayOfWeek => $value){
if(!isset($workDays[$dayOfWeek])){
$scheduledDays[] = ['days' => $dayOfWeek, 'start' => '-', 'end' => '-'];
continue;
}
$scheduledDays[] = ['days' => $workDays[$dayOfWeek]->days, 'start' => $workDays[$dayOfWeek]->start, 'end' => $workDays[$dayOfWeek]->end];
}
return view('your.view', [
'scheduledDays' => $scheduledDays
]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391963.html
