laravel:当计数达到给定值时如何从 foreach 循环中删除选定的数据
Posted
技术标签:
【中文标题】laravel:当计数达到给定值时如何从 foreach 循环中删除选定的数据【英文标题】:larave: how to remove slected data from foreach loop when count reach given value 【发布时间】:2021-07-07 00:37:05 【问题描述】:概览
我正在使用预约系统,但时间段对所有人开放没有预订限制我想在所选时间段的预订计数达到 25 时隐藏/禁用所选时间段
这是我用于 foreach 的变量
@php
$times = DB::table('times')
->where('app_id', $app->id)
->get();
@endphp
我就是这样的foreach
@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 时,我想禁用该特定时间段,我该怎么做?
感谢您宝贵的时间
【问题讨论】:
【参考方案1】:根据我从你的问题中得到的信息,你需要 不显示 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
我还没有测试代码,希望它有效。
【讨论】:
【参考方案2】:根据我对您的查询的了解,如果 $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
【讨论】:
以上是关于laravel:当计数达到给定值时如何从 foreach 循环中删除选定的数据的主要内容,如果未能解决你的问题,请参考以下文章
当我尝试使用 Laravel 中的“别名”从数据库中获取值时如何修复“未定义的偏移量:0”
当 javascript count++ 达到所选值时,如何跳转到页面顶部 [<div id="To"></div>]?