此帖子参考:Laravel: Disable "Booked" times from time range
我需要在30分钟内显示从上午9点到下午5点的时间列表。然后,我需要屏蔽一定时间。例如,如果无法使用12:30 pm-1:30 pm,那么我需要在时间上进行删除线。
“不可用时间”必须排列在数组中,因为在给定的一天中可能有多个时间。
@php
$bookings_array = array(
array(
'start_time' => "09:00:00",
'end_time' => "10:00:00"
)
)
@endphp
@for ($i=$start_time;$i<=$end_time;$i = $i + 30*60)
@if($i >= strtotime($empbooking->start_time) && $i <= strtotime($empbooking->end_time))
@foreach($employee_booking as $booking)
Booking [unavailable] {{ $booking->start_time }} - {{ $booking->end_time }} ({{ $booking->title }}) <br>
@endforeach
@endif
{{ date('H:i a', $i) }} [available] <br>
@endfor
非常感谢您的帮助!
答案 0 :(得分:1)
我无法完全理解代码中每个变量的含义,但是我相信您正在寻找的东西是这样的:
@php
$bookings_array = array(
(object)array(
'start_time' => "12:30:00",
'end_time' => "13:30:00"
),
(object)array(
'start_time' => "16:30:00",
'end_time' => "18:00:00"
)
);
$start_time = strtotime('09:00:00');
$end_time = strtotime('19:00:00');
@endphp
@for ($i=$start_time;$i<=$end_time;$i = $i + 30*60)
@foreach ($bookings_array as $booking)
@if (strtotime($booking->start_time) <= $i && strtotime($booking->end_time) >= $i)
{{ date('H:i a', $i) }} [unavailable] <br>
@continue(2)
@endif
@endforeach
{{ date('H:i a', $i) }} [available] <br>
@endfor
这种解决方案虽然可行,但速度较慢,因为您每次都需要遍历预订数组。一种更有效的方法是预先计算可用/不可用时间,然后再计算。
答案 1 :(得分:0)
感谢Thiago的回答。我下面的完整代码可以按我的意愿工作:
@php
$employee_booking = $bookings->where('employee_id',$employeedetails->id)->where('start_date', date('Y-m-d', strtotime($_GET['booking_date'])))->all();
@endphp
@for ($i=$start_time;$i<=$end_time;$i = $i + 30*60)
@foreach ($employee_booking as $booking)
@if (strtotime($booking->start_time) <= $i && strtotime($booking->end_time) >= $i)
<div>
<input type="radio" id="control_{{ date('H:i a',$i) }}" name="booking_time" value="{{ date('H:i a',$i) }}" disabled="disabled">
<label for="control_{{ date('H:i a',$i) }}">
<h2>{{ date('H:i a', $i) }}</h2> <!-- TAKEN DATE -->
</label>
</div>
@continue(2)
@endif
@endforeach
<div>
<input type="radio" id="control_{{ date('H:i a',$i) }}" name="booking_time" value="{{ date('H:i a',$i) }}">
<label for="control_{{ date('H:i a',$i) }}">
<h2>{{ date('H:i a',$i) }}</h2> <!-- AVAILABLE DATE -->
</label>
</div>
@endfor