Skip to content
Advertisement

Separation the table and each name follows the table

I want Make Different on Table, Each table has a service name Dontt Need Loop Again Table same Group Name, Each group has the name of the service

Check : https://i.ibb.co/NTnynGq/639.png


View : Package.blade.php

<div class="pt-120 pb-120">
  <div class="container">
    <div class="row justify-content-center">
      <div class="col-lg-12">
        <div class="table-responsive--md">
          <div class="services-table w-100">
            <div class="service-group">
              <div class="card">
                @foreach($packages as $singlePackage)
                  <br>
                  <table class="table table-bordered style--two">
                    <thead>
                      <tr>
                        <th style="width:70%">
                          <span>Group Name : {{ $singlePackage->groups->name }}</span>
                        </th>
                        <th style="width:15%">
                          <span>@lang('Services Name')</span>
                        </th>
                        <th style="width:15%">
                          <span>@lang('Services Name')</span>
                        </th>
                        <th style="width:15%">
                          <span>@lang('Action')</span>
                        </th>
                      </tr>
                    </thead>
                    <tbody>
                      <tr class="block item">
                        <td class="word-break">{{ $singlePackage->name }}</td>
                        <td>
                          <span>{{ $singlePackage->delivery_time }}</span>
                        </td>
                        <td>
                          <span>{{ $singlePackage->price }}</span>
                        </td>
                        <td>
                          <span>{{ $singlePackage->price }}</span>
                        </td>
                      </tr>
                    </tbody>
                  </table>
                @endforeach
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

Package Model

<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Package extends Model
{
    protected $guarded = ['id'];
       
    public function groups()
    {
        return $this->belongsTo(Group::class);
    }
}

PackageController.php

public function packages()
{
    $pageTitle = 'Packages';

    $packages = Package::where('status', 1)->with('groups')->paginate(getPaginate());
        
    return view('package',compact('pageTitle', 'packages'));
}

Want Separation each group has the name of the service

Advertisement

Answer

Option 1: You can add an ORDER BY group_id in the query

$packages = Package::where('status', 1)->with('groups')->orderBy('group_id')->paginate(getPaginate());

Option 2: You can sort by the group name in the foreach

@foreach($packages->sortBy(function ($item) { return $item->group->name; }) as $singlePackage)

or

@foreach($packages->sortBy(fn($item) => $item->group->name) as $singlePackage)

Option 3: Use the Collection‘s groupBy method.

<div class="card">
  @foreach($packages->groupBy(function ($item) { return $item->groups->name;  }) as $name => $group)
    <br>
    <table class="table table-bordered style--two">
      <thead>
        <tr>
          <th style="width:70%">
            <span>Group Name : {{ $name }}</span>
          </th>
          <th style="width:15%">
            <span>@lang('Services Name')</span>
          </th>
          <th style="width:15%">
            <span>@lang('Services Name')</span>
          </th>
          <th style="width:15%">
            <span>@lang('Action')</span>
          </th>
        </tr>
      </thead>
      <tbody>
        @foreach($group as $singlePackage)
          <tr class="block item">
            <td class="word-break">{{ $singlePackage->name }}</td>
            <td>
              <span>{{ $singlePackage->delivery_time }}</span>
            </td>
            <td>
              <span>{{ $singlePackage->price }}</span>
            </td>
            <td>
              <span>{{ $singlePackage->price }}</span>
            </td>
          </tr>
        @endforeach
      </tbody>
    </table>
  @endforeach
</div>
User contributions licensed under: CC BY-SA
2 People found this is helpful
Advertisement