lundi 18 février 2019

Count Data In Laravel

I want to count data based on status in laravel 5.7. I have six status (Assigned, On The Way, Started, Cancel Worker, Cancel Admin and Closed). I have make query for this inside foreach data.

This is my code:

  $data['list_detail'] = [];

  foreach ($listFa as $value) {
    $type = $value->type;
    $descr = $value->descr;

    $c_ass_detail = transaction::where('type', $value->type)
                                ->where('status','like','%Assigned%')
                                ->groupBy('type')
                                ->count();

    $c_otw_detail = transaction::where('type', $value->type)
                                ->where('assign_status','like','%On The Way%')
                                ->groupBy('type')
                                ->count();

    $c_str_detail = transaction::where('type', $value->type)
                                ->where('assign_status','like','%Started%')
                                ->groupBy('type')
                                ->count();

    $c_cbw_detail = transaction::where('type', $value->type)
                                ->where('assign_status','like','%Cancel Worker%')
                                ->groupBy('type')
                                ->count();

    $c_cba_detail = transaction::where('type', $value->type)
                                ->where('assign_status','like','%Cancel Admin%')
                                ->groupBy('type')
                                ->count();

    $c_cls_detail = transaction::where('type', $value->type)
                                ->where('assign_status','like','%Closed%')
                                ->groupBy('type')
                                ->count();

    $total = $c_ass_detail +  $c_otw_detail +  $c_str_detail +  $c_cbw_detail + $c_cba_detail + $c_cls_detail;                         

    array_push($data['list_detail'], array('type'=>$type, 'descr'=>$descr, 'c_ass_detail'=>$c_ass_detail, 'c_otw_detail'=>$c_otw_detail, 'c_str_detail'=>$c_str_detail, 'c_cbw_detail'=>$c_cbw_detail, 'c_cba_detail'=>$c_cba_detail, 'c_cls_detail'=>$c_cls_detail, 'total'=>$total));
  }

and this is my view code:

   <tbody>
       @foreach($list_detail_fa as $row)
      <tr class="tr_dashboard">
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
          <td></td>
      </tr>
       @endforeach                    
   </tbody>

It's working, but i think this way is not good because when i refresh the page, it's so slowly to show back the data. May be it's because to many same query. So how to good way, if i want to count the data just using one query for each status



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire