How to display record count in laravel?

Viewed 62

this is my controller query:

$orderStatistics = OrderHeader::orderBy('order_status')
    ->select(DB::raw('order_status,count(*) as count'))
    ->groupBy('order_status')
    ->get();

and this returns a response as this:

"data": [
{
  "order_status": "APR",
  "count": 2
},
{
  "order_status": "CNCL",
  "count": 4
},
{
  "order_status": "NTE",
  "count": 3
},
{
  "order_status": "PND",
  "count": 2
},
{
  "order_status": "SHP",
  "count": 1
}

]

how can I return the relevant order_status and it's count for example as this:

APR : 2
3 Answers

you can try this way to format data like APR : 2 this ..

$orderStatistics = OrderHeader::orderBy('order_status')
    ->select(DB::raw('order_status,count(*) as count'))
    ->groupBy('order_status')
    ->get();

   $orderStatistics =   $orderStatistics->map(function($item){
                   return [
                    $item->order_status => $item->count,
                   ];
               });

You can use transform function on your collection:


$result = $result->transform(function($re){
        return //your changes on an object ($re)
})

If you want make an array for JsonResponse:

$data=[];
foreach($results as $re){
$data[$re->order_status]=$re->count;
}

return response()->json($data);
  $numb = 0;
  $newOrderStatus=[];
    foreach($orderStatistics as $orderStatistic){
     array_push($newOrderStatus, $orderStatistic->data[$numb]->order_status.':'.$orderStatistic->data[$numb]->count;
     $numb++
    }
    echo $newOrderStatus[0];// your example but you just return $newOrderStatus
    return response()->json($newOrderStatus);

This is what i would think of fast if you want to echo it to a view as array object you just parse return response()->json($newOrderStatus) But as you receive it javascript will see it as a string so you have to parseJson(receiveddata);

Related