从MySQL数据库动态加载元素时,在PHP中连接2个JSON数组
我正在使用LaravelAPI,我有以下要求。我正在查询数据库并接受一些订单。我正在检查一个合同id,我正在使用2个SQL查询来获取具有合同id的订单以及没有合同id的订单从MySQL数据库动态加载元素时,在PHP中连接2个JSON数组,php,mysql,arrays,json,laravel,Php,Mysql,Arrays,Json,Laravel,我正在使用LaravelAPI,我有以下要求。我正在查询数据库并接受一些订单。我正在检查一个合同id,我正在使用2个SQL查询来获取具有合同id的订单以及没有合同id的订单 public function totalOrdersTest(Request $request) { $from = new DateTime($request->query->get('from')); $to = new DateTime($request->query->ge
public function totalOrdersTest(Request $request)
{
$from = new DateTime($request->query->get('from'));
$to = new DateTime($request->query->get('to'));
$manufacturer_id = $request->query->get('manu');
$article_template_id = $request->query->get('article_template_id');
if ($article_template_id == '' || $article_template_id == null) {
$results_not_null = Order::selectRaw('count(*) not_null_order_count, DATE_FORMAT(orders.created_at, "%Y-%m-%d") as order_date')
->filterManufacturer($manufacturer_id)
->join('order_items', 'order_items.order_id', '=', 'orders.id')
->whereNotNull('order_items.tariff_id')
->whereBetween('orders.created_at', [$from, $to])
->groupBy('order_date')
->orderBy('order_date')
->get();
$results_null = Order::selectRaw('count(*) null_order_count, DATE_FORMAT(orders.created_at, "%Y-%m-%d") as order_date')
->filterManufacturer($manufacturer_id)
->join('order_items', 'order_items.order_id', '=', 'orders.id')
->whereNull('order_items.tariff_id')
->whereBetween('orders.created_at', [$from, $to])
->groupBy('order_date')
->orderBy('order_date')
->get();
} else {
$result = Order::selectRaw('count(*) order_count, DATE_FORMAT(created_at, "%Y-%m-%d") as order_date')
->filterArticleTemplate($article_template_id)
->whereBetween('created_at', [$from, $to])
->groupBy('order_date')
->orderBy('order_date')
->get();
}
// Need to concatenate ´$results_not_null´ & ´$results_null´ and take a one JSON array.
}
从这段代码中,我得到了这个包含2个对象的JSON数组
{"results_not_null":[{"not_null_order_count":1,"order_date":"2020-06-09"},{"not_null_order_count":2,"order_date":"2020-06-19"},{"not_null_order_count":1,"order_date":"2020-06-29"},{"not_null_order_count":5,"order_date":"2020-07-06"},{"not_null_order_count":2,"order_date":"2020-07-07"},{"not_null_order_count":1,"order_date":"2020-07-08"},{"not_null_order_count":1,"order_date":"2020-07-15"},{"not_null_order_count":1,"order_date":"2020-07-17"},{"not_null_order_count":2,"order_date":"2020-07-22"},{"not_null_order_count":1,"order_date":"2020-07-31"},{"not_null_order_count":1,"order_date":"2020-08-01"},{"not_null_order_count":1,"order_date":"2020-08-03"},{"not_null_order_count":1,"order_date":"2020-08-15"},{"not_null_order_count":2,"order_date":"2020-08-27"},{"not_null_order_count":1,"order_date":"2020-09-15"},{"not_null_order_count":1,"order_date":"2020-09-17"},{"not_null_order_count":4,"order_date":"2020-09-18"},{"not_null_order_count":2,"order_date":"2020-09-19"},{"not_null_order_count":1,"order_date":"2020-09-20"},{"not_null_order_count":1,"order_date":"2020-09-21"},{"not_null_order_count":2,"order_date":"2020-09-22"},{"not_null_order_count":5,"order_date":"2020-09-23"},{"not_null_order_count":1,"order_date":"2020-09-24"},{"not_null_order_count":2,"order_date":"2020-09-25"},{"not_null_order_count":1,"order_date":"2020-09-26"},{"not_null_order_count":5,"order_date":"2020-09-27"},{"not_null_order_count":5,"order_date":"2020-09-28"},{"not_null_order_count":5,"order_date":"2020-09-29"},{"not_null_order_count":3,"order_date":"2020-09-30"},{"not_null_order_count":4,"order_date":"2020-10-01"},{"not_null_order_count":3,"order_date":"2020-10-02"},{"not_null_order_count":4,"order_date":"2020-10-04"},{"not_null_order_count":1,"order_date":"2020-10-05"},{"not_null_order_count":3,"order_date":"2020-10-06"},{"not_null_order_count":2,"order_date":"2020-10-07"},{"not_null_order_count":1,"order_date":"2020-10-08"}],"results_null":[{"null_order_count":1,"order_date":"2020-06-09"},{"null_order_count":1,"order_date":"2020-06-15"},{"null_order_count":1,"order_date":"2020-06-18"},{"null_order_count":3,"order_date":"2020-06-19"},{"null_order_count":1,"order_date":"2020-06-23"},{"null_order_count":1,"order_date":"2020-06-25"},{"null_order_count":1,"order_date":"2020-06-29"},{"null_order_count":21,"order_date":"2020-07-06"},{"null_order_count":2,"order_date":"2020-07-07"},{"null_order_count":3,"order_date":"2020-07-08"},{"null_order_count":1,"order_date":"2020-07-15"},{"null_order_count":3,"order_date":"2020-07-17"},{"null_order_count":3,"order_date":"2020-07-19"},{"null_order_count":2,"order_date":"2020-07-22"},{"null_order_count":3,"order_date":"2020-07-24"},{"null_order_count":1,"order_date":"2020-07-31"},{"null_order_count":1,"order_date":"2020-08-01"},{"null_order_count":1,"order_date":"2020-08-03"},{"null_order_count":1,"order_date":"2020-08-04"},{"null_order_count":1,"order_date":"2020-08-15"},{"null_order_count":5,"order_date":"2020-08-27"},{"null_order_count":2,"order_date":"2020-09-02"},{"null_order_count":2,"order_date":"2020-09-13"},{"null_order_count":1,"order_date":"2020-09-15"},{"null_order_count":1,"order_date":"2020-09-17"},{"null_order_count":4,"order_date":"2020-10-01"}]}
但是我需要连接这两个JSON数组。最重要的任务是在两个数组中都有相同的日期,然后我需要在一个元素中使用它们。比如说,
[
{
"order_date":"2020-12-12",
"not_null_order_count": 2,
"null_order_count":3
},
{
"order_date":"2020-12-13",
"not_null_order_count": 12,
"null_order_count":5
},
{
"order_date":"2020-12-14",
"null_order_count":9
}
]
这是我需要的输出。有时一个日期只有空订单计数或没有空订单计数
是否有任何方法可以使用一个MySQL查询来实现这一点?或者如何组合这两个数组并生成一个JSON数组?请给出建议。尝试合并两个JSON:
\json_encode(array_merge(\json_decode($json1, true), \json_decode($json2, true)))
您可以发布最终的sql查询吗?您可以通过使用SUM(CASE WHEN..对1个查询执行此操作,但我非常确定您必须使用native编写它sql@AngelDeykov嘿,你是说由Laravel ORM生成的本机SQL查询吗?是的,你能将其发布为well@AngelDeykov请检查这里的代码:它不工作。我需要组合这两个数组,然后有以下响应。[{“订单日期”:“2020-12-12”,“非空订单计数”:2,“空订单计数”:3},{“订单日期”:“2020-12-13”,“非空订单计数”:12,“空订单计数”:5},{“订单日期”:“2020-12-14”,“空订单计数”:9}]