Laravel 拉雷维尔雄辩伯爵
我有一个名为project的表,它有一个名为status的列,它有4个值:created、active、done和cancelled。 如果可能,我希望在一次查询中获得每个状态的count对象:Laravel 拉雷维尔雄辩伯爵,laravel,eloquent,Laravel,Eloquent,我有一个名为project的表,它有一个名为status的列,它有4个值:created、active、done和cancelled。 如果可能,我希望在一次查询中获得每个状态的count对象: [ "created" : 5, "active" : 34, "done" : 7, "cancelled" : 5 ] 您可以通过原始查询来完成 $rows = DB::select('SELECT count(*) as cnt, status_id FROM `
[
"created" : 5,
"active" : 34,
"done" : 7,
"cancelled" : 5
]
您可以通过原始查询来完成
$rows = DB::select('SELECT count(*) as cnt, status_id FROM `projects` WHERE 1 group by status');
结果:
array:5 [
0 => {
"cnt": 1
"status": 'status1'
}
1 => {
"cnt": 882
"status": 'status2'
}
]
在结构中转换
$data = [];
foreach ($row as $row) {
$data[$row->status] = $row->cnt;
}
通过这样做,您可以在一个查询中获得它
$status=Project::select('status')->get();
$result=$status->groupBy('status')->map(fn($v)=>$v->count());
$status->count()//总数,
$result//这是您想要的结果。
列的类型是什么?是否也可以获得总计数?在一个查询中,我认为不可以,但您可以在循环中进行