[英]How to get sum and separate the total per Id in laravel
这是我在控制器中的查询
public function show($id)
{
$Days = DB::table('payroll_monthly_attn_project')->where('payroll_monthly_id',$id)->where('assign','PAINTING')
->select('payroll_monthly_attn_project.wrk_id','payroll_monthly_attn_project.project_code','payroll_monthly_attn_project.assign','payroll_monthly_attn_project.days');
$Monthly_details = DB::table('payroll_monthly_payable_details')->where('payroll_monthly_payable_details.payroll_monthly_id', $id)
->select('payroll_monthly_payable_details.daily_rate','payroll_monthly_payable_details.late','payroll_monthly_payable_details.ut','payroll_monthly_payable_details.absent','days.*')
->leftjoinSub($Days,'days',function($join){
$join->on('payroll_monthly_payable_details.wrk_id','=','days.wrk_id');
})
->get();
return $Monthly_details;
}
我的查询结果......我想得到单独的
project_code
0: {daily_rate: 8.63, late: 0, ut: 0, absent: 0, wrk_id: 3, project_code: "CMUN", assign: "PAINTING",…}
absent: 0
assign: "PAINTING"
daily_rate: 8.63
days: 13
late: 0
project_code: "CMUN"
ut: 0
wrk_id: 3
1: {daily_rate: 575.08, late: 0, ut: 0, absent: 0, wrk_id: 2, project_code: "N2", assign: "PAINTING",…}
absent: 0
assign: "PAINTING"
daily_rate: 575.08
days: 7
late: 0
project_code: "N2"
ut: 0
wrk_id: 2
2: {daily_rate: 57.51, late: 0, ut: 0, absent: 0, wrk_id: 4, project_code: "N2", assign: "PAINTING",…}
absent: 0
assign: "PAINTING"
daily_rate: 57.51
days: 13
late: 0
project_code: "N2"
ut: 0
wrk_id: 4
我也试过这个,但它只能得到所有的总和
public function show($id)
{
$Days = DB::table('payroll_monthly_attn_project')->where('payroll_monthly_id',$id)->where('assign','PAINTING')
->select('payroll_monthly_attn_project.wrk_id','payroll_monthly_attn_project.project_code','payroll_monthly_attn_project.assign','payroll_monthly_attn_project.days');
$Monthly_details = DB::table('payroll_monthly_payable_details')->where('payroll_monthly_payable_details.payroll_monthly_id', $id)
->select('payroll_monthly_payable_details.daily_rate','payroll_monthly_payable_details.late','payroll_monthly_payable_details.ut','payroll_monthly_payable_details.absent','days.*')
->leftjoinSub($Days,'days',function($join){
$join->on('payroll_monthly_payable_details.wrk_id','=','days.wrk_id');
})
->get();
$fetch = [];
$grandTotal = 0;
foreach($Monthly_details as $key){
$grandTotal += ($key->daily_rate * $key->days) - $key->absent - $key->late - $key->ut;
}
$fetch['grandTotal'] = $grandTotal;
return $fetch;
}
我的查询结果..
{grandTotal: 4885.38}
grandTotal: 4885.38
我想要达到的结果..
"CMUN"{project_code:"CMUN"
total:112.19},
"N2"{project_code:"N2"
total:4773.19}
您不需要更改查询。 只需更改 foreach 循环代码。
foreach($Monthly_details as $key){
if(empty($fetch[$key->project_code])){
$fetch[$key->project_code]['total'] = 0;
}
$fetch[$key->project_code]['total'] += ($key->daily_rate * $key->days) - $key->absent - $key->late - $key->ut;
}
return $fetch;
// 调用函数 show() 的部分。
$results = work($id);
foreach($results as $projectCode => $total){
echo $projectCode." total cost is: ".$total;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.