从MySQL数据库动态加载元素时,在PHP中连接2个JSON数组

从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

我正在使用LaravelAPI,我有以下要求。我正在查询数据库并接受一些订单。我正在检查一个合同id,我正在使用2个SQL查询来获取具有合同id的订单以及没有合同id的订单

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