Laravel 5.4 blade foreach 循环

Laravel 5.4 blade foreach loop

我正在构建一个场地管理系统,并且在登录页面上,我试图向访问者显示所有可用的插槽。已经预订的显示为不可用。我创建了两个变量,一个携带时间 table 的信息,另一个携带预订 table 的信息,并尝试使用 blade 进行比较和显示。 这就是我在 blade:

中尝试实现它的方式
@foreach($times as $time)   
 @foreach($bookings as $booking)
    <tr>
        @if($time->availble_times == $booking->booking_time)
            <td>{{$time->availble_times}}: not available</td>
        @else
            <tr><td>{{$time->availble_times}}</td>
        @endif
            </tr>
 @endforeach    
@endforeach 

但是它所做的是始终显示预订中尽可能多的记录 table。就像预订 table 中有两行一样,它会显示两次时间,依此类推。为了以防万一,这是我的控制器功能:

 public function times(){
    $times = Times::all();
    $bookings = Bookings::all();
    return view('/test2')->with('times', $times)->with('bookings', $bookings);
}

我最近开始做 Laravel,但无法弄清楚这个问题。我的问题是,如何解决 n-times 显示问题并向用户显示哪些时间已预订,哪些时间可用?

我不知道你的数据是什么样子的,但通过查看你的代码,列 availble_timesbooking_time 是日期字段。如果 Times 模型是小时的字典(如 1. 8.00, 2. 8:45, 3. 9:00),并且预订时间必须在 Times 记录中,那么您只需要反转循环即可显示每次预订

@foreach($bookings as $booking)
    @foreach($times as $time)
        <tr>
            <td>{{ getImaginedChairNumber() }}</td>
            <td>{{ $time->availble_times }}</td>
            @if($time->availble_times == $booking->booking_time)
                {{-- There is already booking for that dictionary time --}}
                <td>not available</td>
            @else
                <td>available</td>
            @endif
        </tr>
    @endforeach
@endforeach

应该产生类似的 table:

╔═══════╦══════╦═══════════════╗
║ Chair ║ Time ║    Booking    ║
╠═══════╬══════╬═══════════════╣
║ A1    ║ 8:00 ║ not available ║
║ A1    ║ 8:45 ║ available     ║
║ A1    ║ 9:00 ║ not available ║
║ A2    ║ 8:00 ║ not available ║
║ A2    ║ 8:45 ║ not available ║
║ A2    ║ 9:00 ║ not available ║
║ A3    ║ 8:00 ║ available     ║
║ A3    ║ 8:45 ║ available     ║
║ A3    ║ 9:00 ║ not available ║
╚═══════╩══════╩═══════════════╝

这是您期望的 table 输出的正确形式吗? (我用这个工具画的asciitablehttps://senseful.github.io/web-tools/text-table/