kil*_*eet 2 php laravel eloquent
如果我有以下表结构
ID name type
1 John Admin
2 Johan Admin
3 Sam User
4 Rick User
Run Code Online (Sandbox Code Playgroud)
我如何将 Laravels Eloquent 与 groupBy 查询一起使用,但仍然获取每条记录,并总结每种类型有多少条记录?
示例结果如下
[
'type' => 'Admin',
'records' => 2
'data' => [
0 => [
'name' => 'John'
],
1 => [
'name' => 'Johan'
]
]
],
[
'type' => 'User',
'records' => 2
'data' => [
0 => [
'name' => 'Sam'
],
1 => [
'name' => 'Rick'
]
]
]
Run Code Online (Sandbox Code Playgroud)
由于您正在查询所有用户,因此您应该在查询后进行分组,而不是在查询中进行分组,如下所示:
$users = User::all()->groupBy('type');
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
foreach ($allUsers as $type => $users) {
$type; // 'Admin'
$users->count(); // Record Count
foreach ($users as $user) {
$user->name; //
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想要的数据与您的示例完全相同,那么它将是:
User::all()
->groupBy('type')
->map(function($users, $type) {
return [
'type' => $type,
'records' => $users->count(),
'data' => $users->pluck('name')
];
})
->values();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7695 次 |
| 最近记录: |