如何使用Laravel、MySql、JSON按不同城市对订单进行分组
正在尝试构建laravel项目订单相关信息的报告结果。但在特定的数据结构上寻找解决方案却举步维艰 我的请求:如何使用Laravel、MySql、JSON按不同城市对订单进行分组,mysql,json,laravel,laravel-5,e-commerce,Mysql,Json,Laravel,Laravel 5,E Commerce,正在尝试构建laravel项目订单相关信息的报告结果。但在特定的数据结构上寻找解决方案却举步维艰 我的请求: // Date Ranges $fromDate = $this->request->fromDate; $toDate = $this->request->toDate; 因此,结果应该在日期范围内 我的订单表: order_id order_addresses grand_total -------------------------------
// Date Ranges
$fromDate = $this->request->fromDate;
$toDate = $this->request->toDate;
因此,结果应该在日期范围内
我的订单表:
order_id order_addresses grand_total
------------------------------------------
1 JSON DATA 3,000.00
2 JSON DATA 2,000.00
3 JSON DATA 1,500.00
因此,我的JSON数据
如下所示:
{
"delivery_address":{
"House":"Offline House",
"Street":"Offline Road",
"Area":"Offline Area",
"PostCode":"1230",
"City":"City1",
"Country":"Country1",
"ContactPerson":"Offline User",
"ContactNumber":"01XXXXXXXX"
}
}
我只想得到如下答复:
{
"orders": 3, // How many orders are there in that particular city
"totals": "5,500.00", // Total how much the cost of orders in that city
"groupby": "City1",
},
{
"orders": 5,
"totals": "7,500.00",
"groupby": "City2",
},
...,
...
我正在寻找一个在laravel和MySQL中使用查询生成器的解决方案
这是一个现有的项目,所以我不能真正改变它的结构。关于如何从JSON数据中提取城市的任何建议,这些数据与订单标识以及总计和所有相关。
我只需要订单号,我认为这是城市的智慧,然后我就可以按照我喜欢的方式组织我的结果,以实现最终结果。
如果这里有什么不明白的地方,请告诉我,以便我能说清楚
提前谢谢 我建议使用Laravel收集函数对获取的数据进行分组 订单模式
类顺序扩展模型{
//这将把数据强制转换为本机类型。
//因此,将_地址json字符串排序到数组
受保护的$casts=[
“订单地址”=>“数组”,
];
}
控制器功能
//像往常一样从数据库中获取订单
//不考虑分组。
//以你的条件。
//例如,我将简单地使用all()。
$orders=Order::all();
//按城市划分的第一组
//然后映射以获得所需的结果。
$groupedOrders=$orders->groupBy(函数($order){
//因为我们将它添加到模型中的casts数组中
//laravel将自动将json字符串转换为数组。
//所以现在order_地址是一个数组。
返回$order->order_地址['City'];
})
->映射(函数($groupedOrders,$groupName){
返回[
“订单”=>$groupedOrders->count(),
“总计”=>$groupedOrders->sum('grand_total'),
“groupby”=>$groupName,
];
});