从 laravel 中的 groupBy 获取行 ID
Posted
技术标签:
【中文标题】从 laravel 中的 groupBy 获取行 ID【英文标题】:get the row id from a groupBy in laravel 【发布时间】:2020-02-26 18:25:56 【问题描述】:我有一个 groupBy 数据正在工作,但我想知道如何获取嵌套记录的行 ID?
来自我的索引函数
public function index(Request $request)
$collectorBorrowers = CollectorMember::get()
->groupBy('collector.name');
return view('dashboard.collector-members.index', compact('collectorBorrowers'));
这是我的收藏家成员的桌子
这是我在刀片上显示 groupBy 的方式
@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
这给了我这个输出
一切正常,我唯一关心的是收集器成员表中的行 ID,以便我可以从特定收集器中删除记录。
有可能吗?谢谢!
更新:
public function index(Request $request)
$collectorBorrowers = CollectorMember::get()
->keyBy('id')
->groupBy('collector.name');
dd($collectorBorrowers);
【问题讨论】:
【参考方案1】:分组前尝试按行ID进行key集合:
https://laravel.com/docs/5.8/collections#method-keyby
$collectorBorrowers = CollectorMember::get()
->keyBy('id')
->groupBy('collector.name');
然后在你看来遍历这样的组:
@foreach ($users_list as $key => $user)
...
!! Form::open([
'method'=>'DELETE',
'url' => ['/dashboard/collector-members', $key],
]) !!
...
@endforeach
附:避免使用表单助手,因为它已被弃用。
Why are Form and html helpers deprecated in Laravel 5.x?
【讨论】:
再次感谢@romanbobrik。但是在@foreach ($users_list as $key => $user)
上添加 $key 只需给我一个嵌套 foreach 数据的序列号,例如0,1,2,3,4,5。
嗯。你能显示keyed $collectorBorrowers
的转储吗?
我想我明白了。我只需要输入 $user->id。非常感谢@roman以上是关于从 laravel 中的 groupBy 获取行 ID的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 8 中使用 PostgreSQL 中的子查询通过 group by 子句获取行值?