将 blade 中相同类别类型的项目分组
Grouping items of the same category type in blade
我有这个方法 returns 所提供的服务
public function order_services(){
$services = DB::select('select * from services');
return view('guests/services',['services'=>$services]);;
}
我是这样显示的
<ul class="list-group" id="myUl">
@foreach ($services as $service)
<li class="list-group-item d-flex justify-content-between align-items-center border border-danger"><span style="font-size:24px; color:red
"><i class="bi bi-check-circle font-weight-bold "></i></span> <span style="font-weight:bold" id="service_category">{{ $service->service_category }}</span><span><u><i class="bi bi-magic"></i></u></span></li>
<li class="list-group-item d-flex justify-content-between align-items-center"><span class="product_name" style="font-size:24px; color:#870FD1" data-price="349.34"><i class="bi bi-plus-circle"></i></span> <span class="product_name" id="service_name" data-price="{{ $service->service_price }}" data-category="{{ $service->service_category }}" >{{ $service->service_name }}</span><span class="text-success"><u>Available</u></span></li>
@endforeach
</ul>
我的 table 有 service_name
和 service_category
我想将 service_category
显示为 header 以及该类别下的所有服务。这可以在 blade 内完成,还是我需要先在我的控制器中格式化结果?
您可以使用 php 对列表进行分组(在 blade 的控制器中进入 @php 指令):
$list = [];
foreach($services as $item) {
$list[$item->service_category][] = $item;
}
更新方法
public function order_services(){
$services= DB::table('services')
->selectRaw('id,service_name,service_category,service_price')
->orderBy('service_category')
->get();
$list = [];
foreach($services as $item) {
$list[$item->service_category][] = $item;
}
return view('guests/services',['list'=>$list]);
}
并且您可以在blade中使用$list来显示结果:
@foreach ($list as $category => $item)
<h2>{{ $category }}</h2>
<ul class="list-group" id="myUl">
@foreach ($item as $service)
<li class="list-group-item d-flex justify-content-between align-items-center border border-danger"><span style="font-size:24px; color:red
"><i class="bi bi-check-circle font-weight-bold "></i></span> <span style="font-weight:bold" id="service_category">{{ $service->service_category }}</span><span><u><i class="bi bi-magic"></i></u></span></li>
<li class="list-group-item d-flex justify-content-between align-items-center"><span class="product_name" style="font-size:24px; color:#870FD1" data-price="349.34"><i class="bi bi-plus-circle"></i></span> <span class="product_name" id="service_name" data-price="{{ $service->service_price }}" data-category="{{ $service->service_category }}" >{{ $service->service_name }}</span><span class="text-success"><u>Available</u></span></li>
@endforeach
</ul>
@endforeach
我有这个方法 returns 所提供的服务
public function order_services(){
$services = DB::select('select * from services');
return view('guests/services',['services'=>$services]);;
}
我是这样显示的
<ul class="list-group" id="myUl">
@foreach ($services as $service)
<li class="list-group-item d-flex justify-content-between align-items-center border border-danger"><span style="font-size:24px; color:red
"><i class="bi bi-check-circle font-weight-bold "></i></span> <span style="font-weight:bold" id="service_category">{{ $service->service_category }}</span><span><u><i class="bi bi-magic"></i></u></span></li>
<li class="list-group-item d-flex justify-content-between align-items-center"><span class="product_name" style="font-size:24px; color:#870FD1" data-price="349.34"><i class="bi bi-plus-circle"></i></span> <span class="product_name" id="service_name" data-price="{{ $service->service_price }}" data-category="{{ $service->service_category }}" >{{ $service->service_name }}</span><span class="text-success"><u>Available</u></span></li>
@endforeach
</ul>
我的 table 有 service_name
和 service_category
我想将 service_category
显示为 header 以及该类别下的所有服务。这可以在 blade 内完成,还是我需要先在我的控制器中格式化结果?
您可以使用 php 对列表进行分组(在 blade 的控制器中进入 @php 指令):
$list = [];
foreach($services as $item) {
$list[$item->service_category][] = $item;
}
更新方法
public function order_services(){
$services= DB::table('services')
->selectRaw('id,service_name,service_category,service_price')
->orderBy('service_category')
->get();
$list = [];
foreach($services as $item) {
$list[$item->service_category][] = $item;
}
return view('guests/services',['list'=>$list]);
}
并且您可以在blade中使用$list来显示结果:
@foreach ($list as $category => $item)
<h2>{{ $category }}</h2>
<ul class="list-group" id="myUl">
@foreach ($item as $service)
<li class="list-group-item d-flex justify-content-between align-items-center border border-danger"><span style="font-size:24px; color:red
"><i class="bi bi-check-circle font-weight-bold "></i></span> <span style="font-weight:bold" id="service_category">{{ $service->service_category }}</span><span><u><i class="bi bi-magic"></i></u></span></li>
<li class="list-group-item d-flex justify-content-between align-items-center"><span class="product_name" style="font-size:24px; color:#870FD1" data-price="349.34"><i class="bi bi-plus-circle"></i></span> <span class="product_name" id="service_name" data-price="{{ $service->service_price }}" data-category="{{ $service->service_category }}" >{{ $service->service_name }}</span><span class="text-success"><u>Available</u></span></li>
@endforeach
</ul>
@endforeach