【问题标题】:How to display record count in laravel?如何在laravel中显示记录数?
【发布时间】:2021-01-07 07:15:54
【问题描述】:

这是我的控制器查询:

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

这会返回如下响应:

"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
}

]

我怎样才能返回相关的 order_status 和它的计数例如这样:

APR : 2

【问题讨论】:

  • 你想在哪里显示?您想在视图页面中打印吗?
  • 不,我想像上面的例子一样返回 $orderStatistics

标签: mysql laravel eloquent controller


【解决方案1】:
  $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);

如果您想将它作为数组对象回显到视图中,这就是我快速想到的,您只需解析 return response()->json($newOrderStatus) 但是当您收到它时,javascript 会将它视为一个字符串,所以你必须 parseJson(receiveddata);

【讨论】:

    【解决方案2】:

    您可以尝试这种方式来格式化数据,例如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,
                       ];
                   });
    

    【讨论】:

    • 收到此错误:count(): Parameter must be an array or an object that implement Countable
    • 在执行查询后你迭代$orderStatistics变量..
    • 对不起,你能举个例子吗?
    • 否则你可以试试mapWithKeys()函数...
    【解决方案3】:

    您可以在您的收藏中使用转换功能:

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

    如果你想为 JsonResponse 创建一个数组:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-27
      • 2021-01-28
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-02
      相关资源
      最近更新 更多