【问题标题】:Laravel 5.4 blade foreach loopLaravel 5.4刀片foreach循环
【发布时间】:2017-11-13 05:23:37
【问题描述】:

我正在构建一个场地管理系统,并且在登录页面上,我试图向访问者显示所有可用的位置。已预订的显示为不可用。我创建了两个变量,一个包含时间表中的信息,另一个包含预订表中的信息,并使用刀片进行比较和显示。 这就是我试图在刀片中实现它的方式:

@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 

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

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

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

【问题讨论】:

  • 颠倒你的逻辑。你不能指望以@foreach($times as $time) 开头的代码不会一直显示,如果每次迭代都打印一些东西
  • 如何在不使用 foreach 的情况下从 $bookings 内部访问单个实例?我唯一需要做的就是将预订的列时间与可用的列时间进行比较。
  • 通过索引或使用$model-&gt;search(...)

标签: php laravel-5 laravel-5.4 laravel-blade


【解决方案1】:

我不知道您的数据看起来如何,但通过查看您的代码列 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

应该产生类似的表:

╔═══════╦══════╦═══════════════╗
║ 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 ║
╚═══════╩══════╩═══════════════╝

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

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2016-06-29
    • 2017-05-29
    • 2017-09-26
    • 2021-05-05
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    相关资源
    最近更新 更多