sql - 如何制作响应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]);
解决方案
您可以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);
}
推荐阅读
- vue.js - 为什么当我尝试显示存储在本地存储中的组件列表时出现“无法读取 null 的属性‘调用’”?
- react-native - 捕获在反应本机应用程序上加载屏幕所花费的时间
- angular - 首次单击后如何禁用按钮,我希望在一天后单击按钮功能
- python - 如何将列表中的某些元素乘以 0?
- python - 如何将单个列表项拆分为多个项
- php - (PHP) 数据一直返回真或假
- r - 检查组 dplyr 中的值是否随时间变化
- hibernate - 如果我在休眠状态下从数据库中获取实体后更改实体
- java - 选择正确的 Maven 存储库
- php - PHP 问题 if(strtoupper(preg_replace('/\s+/' , $_POST["msg"])=="TEXT")