我在控制器中創建了兩個具有不同長度的陣列,如下所示:
$absences = Absence::query()
->select('name')
->selectRaw('count(name) as counts')
->whereBetween('date', [$req->from, $req->to])
->where('stage',$req->stage)
->where('group',$req->group)
->where('subject',$req->subject)
->where('vacs','No')
->groupBy('name')
->get();
$vacs = Absence::query()
->select('name')
->selectRaw('count(name) as counts')
->whereBetween('date', [$req->from, $req->to])
->where('stage',$req->stage)
->where('group',$req->group)
->where('subject',$req->subject)
->where('vacs','yes')
->groupBy('name')
->get();
取決于這一點,我會得到兩個陣列,輸出將是這樣的:
缺席輸出
[
{
"name": "Sam",
"counts": 2
},
{
"name": "Tom",
"counts": 1
}
]
真空輸出
[
{
"name": "Sam",
"counts": 1
}
]
現在我想用這個輸出創建新陣列:
[
{
"name": "Sam",
"abs_counts": 2,
"vac_counts": 1,
},
{
"name": "Tom",
"abs_counts": 1,
"vac_counts": 0,
}
]
uj5u.com熱心網友回復:
您可以在一個查詢中完成:
$data = Absence::query()
->select('name')
->selectRaw("name, sum(if(vacs = 'No', 1, 0)) as abs_counts, sum(if(vacs = 'yes', 1, 0)) as vac_counts")
->whereBetween('date', [$req->from, $req->to])
->where('stage', $req->stage)
->where('group', $req->group)
->where('subject', $req->subject)
->groupBy('name')
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/323011.html
上一篇:工業領域產品經理的尷尬處境
