【问题标题】:How to get sum of array in foreach in laravel 6如何在laravel 6中获取foreach中的数组总和
【发布时间】:2021-01-09 06:54:06
【问题描述】:

我的控制器总和不起作用

public function show($id)
{

$workers = DB::table('workers')
->select('wrk_id','f_name','m_name','l_name')
   ;
$attendance = DB::table('attendance')->where('payroll_daily_id', $id)
->select('attendance.*','f_name','l_name','m_name',DB::raw('SUM(reg_hour)as tots'))
 
->rightjoinSub($workers,'worker', function($join){
    $join->on('attendance.wrk_id','=','worker.wrk_id');
})
->groupBy('payroll_attn_id')
->get();

  foreach($attendance as $key){
      $fetch[$key->wrk_id]['wrk_id'] = $key->wrk_id;
      $fetch[$key->wrk_id]['f_name'] = $key->f_name;
      $fetch[$key->wrk_id]['l_name'] = $key->l_name;
      $fetch[$key->wrk_id]['m_name'] = $key->m_name;
      $fetch['total_work_hours'] = $key->tots;
      $fetch[$key->wrk_id]['date'][$key->date]['work_hours'] = $key->reg_hour;
      
  }
  return $fetch;  


}

这是result total_work_hours 仅显示8 而不是56

 2: {wrk_id: 2, f_name: "John", l_name: "Doe", m_name: null,…}
    date: {2020-09-27: {work_hours: 8}, 2020-09-28: {work_hours: 8}, 2020-09-29: {work_hours: 8},…}
    2020-09-27: {work_hours: 8}------------------
    2020-09-28: {work_hours: 8}------------------
    2020-09-29: {work_hours: 8}------------------
    2020-09-30: {work_hours: 8}------------------   TOTAL OF THIS IS 56
    2020-10-01: {work_hours: 8}------------------
    2020-10-02: {work_hours: 8}------------------
    2020-10-03: {work_hours: 8}-----------------
    f_name: "John"
    l_name: "Doe"
    m_name: null
    wrk_id: 2
    total_work_hours: "8" <-------------  56 is the total off work_hours from array

【问题讨论】:

  • 你想为所有work_hours 获得 56 而不是 8?
  • 是的,准确的......

标签: arrays laravel eloquent


【解决方案1】:

像这样使用 foreach:

foreach($attendance as $key){
     if(empty($fetch[$key->wrk_id]['total_work_hours'])){
          $fetch[$key->wrk_id]['total_work_hours'] = 0;
     }
      $fetch[$key->wrk_id]['wrk_id'] = $key->wrk_id;
      $fetch[$key->wrk_id]['f_name'] = $key->f_name;
      $fetch[$key->wrk_id]['l_name'] = $key->l_name;
      $fetch[$key->wrk_id]['m_name'] = $key->m_name;
      $fetch['s'] = $key->tots;
      $fetch[$key->wrk_id]['total_work_hours'] += $key->reg_hour;   
  }

【讨论】:

  • 更新了答案。
【解决方案2】:

试试这个

 $fetch = [];
    foreach($attendance as $key){
         if(!isset($fetch[$key->wrk_id]['total_work_hours'])){
            $fetch[$key->wrk_id]['total_work_hours'] = 0;
          }
          $fetch[$key->wrk_id]['wrk_id'] = $key->wrk_id;
          $fetch[$key->wrk_id]['f_name'] = $key->f_name;
          $fetch[$key->wrk_id]['l_name'] = $key->l_name;
          $fetch[$key->wrk_id]['m_name'] = $key->m_name;
          $fetch['s'] = $key->tots;
          $fetch[$key->wrk_id]['date'][$key->date]['work_hours'] = $key->reg_hour;
          $fetch[$key->wrk_id]['total_work_hours'] += $key->reg_hour;
          
      }
      return $fetch;  

【讨论】:

  • 不工作 work_hours 给了我总共 16 个 .. 我想得到导致 total_work_hours56 的所有 work_hours 的总数。
  • 有错误Undefined index: total_work_hours", exception: "ErrorException"
  • 请立即查看
  • 你能帮我解决这个问题吗stackoverflow.com/questions/64024707/…
猜你喜欢
  • 2018-09-20
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
  • 2020-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2020-04-12
相关资源
最近更新 更多