Fer*_*nir 2 php group-by laravel
是的,不确定是我做错了什么还是 Laravel 中 Illuminate\Database 的问题。
我的代码:
$sth = Insect::leftJoin('types', 'types.id', '=', 'families.type_id')
->select('types.name as types','families.id','families.name')
->get()
->groupBy('types');
Run Code Online (Sandbox Code Playgroud)
groupBy之前的结果是:
[
{
"types": "moths",
"id": 1,
"name": "Bombycidae"
},
{
"types": "moths",
"id": 2,
"name": "Brahmaeidae"
},
{
"types": "moths",
"id": 3,
"name": "Cossidae"
},
{
"types": "larvas",
"id": 6,
"name": "test"
}]
Run Code Online (Sandbox Code Playgroud)
但对于 groupBy:
{
"moths": [
{
"types": "moths",
"id": 1,
"name": "Bombycidae"
},
{
"types": "moths",
"id": 2,
"name": "Brahmaeidae"
},
{
"types": "moths",
"id": 3,
"name": "Cossidae"
}
],
"larvas": [
{
"types": "larvas",
"id": 6,
"name": "test"
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,我想摆脱对象中的这种类型......
有任何想法吗?
好吧,首先你要做的是调用groupBy结果集合,这与命名非常糟糕的 MySQL 查询子句无关GROUP BY(不相关,但值得注意)。
您可以将结果映射到您需要的内容:
$sth = Insect::leftJoin('types', 'types.id', '=', 'families.type_id')
->select('types.name as types','families.id','families.name')
->get()
->groupBy('types')->map(function ($group) {
return $group->map(function ($value) {
return [ "id" => $value->id, "name" => $value->name ];
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7653 次 |
| 最近记录: |