将 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_nameservice_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