微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

larave:当计数达到给定值时如何从 foreach 循环中删除选定的数据

如何解决larave:当计数达到给定值时如何从 foreach 循环中删除选定的数据

概览

我正在使用预约预订系统,但时间段对所有人开放 没有预订限制 我想在所选时间段的预订计数达到 25 时隐藏/禁用所选时间段

这是我用于 foreach 的变量

@PHP
$times = DB::table('times')
->where('app_id',$app->id)
->get();
@endPHP

我就是这样的

@foreach ($times as $item)
@PHP

$blocktime = DB::table('bookings')->where('app_id',$app->id)
->where('time',$item->time)
->where('status',1)->get();
@endPHP

<div class="col-md-3" style="padding-bottom: 10px;">
                                            
<label class="btn btn-outline-primary">
<input type="radio" name="time" value="{{ $item->time }}">
<span>{{ $item->time }}</span>
</label>

</div>
@endforeach

在这个变量 $blocktime 中,我计算在什么时候为选定的时间段进行了多少预订

$blocktime  == 25 

$blocktime 计数达到 25 时,我想禁用该特定时间段,我该怎么做?

感谢您的宝贵时间

解决方法

从我从你的问题中得到的信息来看,你需要不显示 time 已经有 25 booking

您只需要使用 count() 而不是 get(),然后如果大于 24 则使用 continue

@foreach ($times as $item)
@php

$blocktime = DB::table('bookings')->where('app_id',$app->id)
->where('time',$item->time)
->where('status',1)->count();

if ($blocktime > 24) {
    continue;
}
@endphp

<div ....>
</div>
@endforeach

我还没有测试代码,希望它有效。

,

根据我对您的查询的理解,如果 $blocktime = 25,您想禁用包含时间段的单选按钮,因此您可以执行以下操作来实现此目的:

    @foreach ($times as $item)
    @php
    $breakTime = false;
    $blocktime = DB::table('bookings')->where('app_id',$app->id)
    ->where('time',$item->time)
    ->where('status',1)->count();
    if ($blocktime == 25) {
        $breakTime = true;
        continue;
    }
    @endphp
    
    
    <div class="col-md-3" style="padding-bottom: 10px;">
                                                
    <label class="btn btn-outline-primary">
    <input type="radio" name="time" value="{{ $item->time }}" {{($breakTime == true) ? 'disable' : ''}}> 
    <span>{{ $item->time }}</span>
    </label>
    
    </div>
    @endforeach




版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。