Foreach l oop отображает только последнюю запись на графике холста и php json не может использоваться в javascript - PullRequest
0 голосов
/ 12 февраля 2020

Я отображаю отчет о продажах, используя холст, и я хочу отобразить сумму даты продажи продукта, мудрый запрос получит результат, но из-за фореха l oop Я получаю только последнюю запись. Я получаю четыре записи от контроллера, но в блейд-файле я нашел только последнюю запись.

Контроллер:

public function display_sales_report(Request $req)
    {
        $data=$req->all();
        $get_details=DB::select('SELECT sum(orders_qty) as sum_of_qty,deliver_date FROM `orders` WHERE deliver_date between ? AND ? GROUP BY deliver_date',[$data['start_date'],$data['end_date']]);
        return view('dashboard',['get_data'=>$get_details]);
    }

Блейд-файл:

<?php

 $getDetails=array();
 foreach($get_data as $data)
 {
  $dataPoints = array( 
    array("y" => $data->sum_of_qty, "label" => $data->deliver_date)
    );
 }

?>
 <div id="chartContainer" style="height: 370px; width: 100%;"></div>

JavaScript:

<script>
window.onload = function() {

var chart = new CanvasJS.Chart("chartContainer", {
    animationEnabled: true,
    theme: "light2",
    title:{
        text: "Sales Report"
    },
    axisY: {
        title: "Number of product sold"
    },
    data: [{
        type: "column",
        yValueFormatString: "#,##0.## tonnes",
        dataPoints: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
    }]
});
chart.render();

}
</script> 

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Определенно !, потому что вам просто присваивается значение вашей переменной datapoints, а не выдвигается новое значение в datapoints. Ваш код должен понравиться.

foreach($get_data as $data)
{
    $dataPoints[] = array("label" => $dat->deliver_date, "y" => $data->sum_of_qty);
}
0 голосов
/ 12 февраля 2020

Поскольку вы устанавливаете данные на $dataPoints в каждом l oop. Вам нужно поместить все данные в каждый l oop, например, так:

foreach($get_data as $data)
{
    $dataPoints[] = array("y" => $data->sum_of_qty, "label" => $data->deliver_date);
}

И в вашем коде javascript вам нужно использовать JSON.parse() для анализа php json строка в javascript массив :

JSON.parse(<?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...