0

I have a groupBy data it is working but I am wondering how can I get the row ID of the nested record?

from my index function

public function index(Request $request)
{
    $collectorBorrowers = CollectorMember::get()
      ->groupBy('collector.name');
}

return view('dashboard.collector-members.index', compact('collectorBorrowers'));

Here's what my collector_member's table

enter image description here

Here's how I display the groupBy on my blade

@foreach ($collectorBorrowers as $collector => $users_list)
    <tr>
        <th colspan="5"
            style="background-color: #F7F7F7">{{ $collector }}: ({{ $users_list->count() }} borrowers)</th>
    </tr>
    @foreach ($users_list as $user)
        <tr>
            <td><div class="profile-side-img rounded-circle" style="background:url({{ url('/storage/avatars/'.$user->borrower['avatar']) }});"><br/></div></td>
            <td><a href="/dashboard/users/{{ $user->borrower['id'] }}" target="_blank">{{ $user->borrower['name'] }}</a></td>
            <td>{{ $user->borrower['email'] }}</td>
            <td>+{{ $user->borrower['country_code'] }}{{ $user->borrower['phone_number'] }}</td>
            <td>
                @if ($user->borrower['email_verified_at'])
                    <button class="btn btn-success btn-sm trans" data-toggle="tooltip" title="Email Verified"><i class="fas fa-at"></i></button>
                @else 
                    <button class="btn btn-light btn-sm trans"><i class="fas fa-at"></i></button>
                @endif

                @if ($user->borrower['phone_verified_at'])
                    <button class="btn btn-success btn-sm trans" data-toggle="tooltip" title="Phone Number Verified"><i class="fas fa-mobile-alt"></i></button>
                @else
                    <button class="btn btn-light btn-sm trans"><i class="fas fa-mobile-alt"></i></button>
                @endif
            </td>
            <td></td>
            <td>
            {!! Form::open([
                'method'=>'DELETE',
                'url' => ['/dashboard/collector-members', $users_list],
                'style' => 'display:inline'
            ]) !!}
                {!! Form::button('<i class="fas fa-trash-alt" aria-hidden="true"></i>', array(
                        'type' => 'submit',
                        'class' => 'btn btn-custom-danger btn-sm trans',
                        'title' => 'Remove user',
                        'onclick'=>'return confirm("Confirm delete?")',
                        'data-toggle' => 'tooltip',
                        'data-original-title' => 'Edit'
                )) !!}
            {!! Form::close() !!}                                             
            </td>
        </tr>
        {{-- {{dd($users_list)}} --}}
    @endforeach
@endforeach

that gives me this output

enter image description here

everything is ok my only concern is the row id from collector_member's table so that i can remove the record from specific collector.

is is possible? thanks!

UPDATE:

public function index(Request $request)
{
    $collectorBorrowers = CollectorMember::get()
        ->keyBy('id')
        ->groupBy('collector.name');

    dd($collectorBorrowers);
}

enter image description here

enter image description here

SleepWalker
  • 613
  • 1
  • 12
  • 39

1 Answers1

1

Try to key collection by row ID before grouping:

https://laravel.com/docs/5.8/collections#method-keyby

$collectorBorrowers = CollectorMember::get()
      ->keyBy('id')
      ->groupBy('collector.name');

And then in your view traverse groups like that:

@foreach ($users_list as $key => $user)
      ...
      {!! Form::open([
            'method'=>'DELETE',
            'url' => ['/dashboard/collector-members', $key],
      ]) !!}
      ...
@endforeach

P.S. Avoid Form Helper, cause it deprecated.

Why are Form and HTML helpers deprecated in Laravel 5.x?

Roman Meyer
  • 2,634
  • 2
  • 20
  • 27