首页 > 解决方案 > 如何制作响应json groupby并获取分组的所有值

问题描述

如何对数据进行分组并获取数组中数据的所有值

例子

id name    date       public
1  hi   2018-10-19    true
2  hai  2018-10-20    true
3  bye  2018-10-19    true

比我想让响应 json 像

data:{
"2018-10-19": [
  {
     "name": "hi",
     "public": true
  },
  {
     "name": "bye",
     "public": true
  }
 ],
 "2018-10-20": [
  {
     "name": "hai",
     "public": true
  }
 ],
}

我试试这个

$data = DB::table('calendar')->select('date')->groupBy('date')->orderBy('date','asc')->get();

    return response()->json(['status'=>'success','data'=>$data]);

标签: sqljsonlaravellaravel-5

解决方案


您可以groupBy在 laravel 查询中使用:

public function calendar($id)
{
  #Calendar is a model name. 
  #data is relationship in Calendar model.

  $calendar = Calendar::whereHas('data', function ($query) use($id) {
    $query->where('id',$id);
  })->get()->groupBy(column_name_you_want_to_group_by);
    return response()->json([$calendar],200);
}

推荐阅读