Как создать столбец диаграммы, показывающий потребление всех транспортных средств за каждый месяц - PullRequest
0 голосов
/ 15 января 2019

База данных автомобилей:

enter image description here

Данные по топливу за январь и февраль:

enter image description here

Передача данных о ян в Bjl 9829:

enter image description here

Я хочу, чтобы график отображал ежемесячное потребление всех транспортных средств, но вместо этого он берет 1-е транспортное средство в массиве vehicleNames и дает ему все значения январского потребления топлива и делает то же самое для остальных. Как получить общий литр в каждом месячном массиве, отсортированном по транспортным средствам?

Я запрашивал весь расход топлива за каждый месяц, затем за каждый месяц я просматривал его, чтобы получить регистрационный номер транспортного средства и литры. Это прекрасно работает, но не добавляет литров для транспортных средств, которые имеют такую ​​же регистрацию. TBH У меня просто нет никакого представления о том, как проверить vehicleNamesArray [$ i] и получить всю его сумму литров в dataArray [$ i], а затем продолжить цикл для всех других транспортных средств в массиве, прежде чем переходить к dataArray [$ 2] ..

<?php

  namespace App\Http\Controllers;
  use Illuminate\Http\Request;
  use App\Fuel;
  use App\Vehicle;
  use DB;

  class ChartController extends Controller
 {
      public function highchart()

 {


    $janDetails = Fuel::whereBetween('date', ['2019-01-01', '2019-01-31'])->get();
   //dd($janDetails);
    $febDetails = Fuel::whereBetween ( 'date',['2019-02-01', '2019-02-31'])->get ();
    $marDetails = Fuel::whereBetween ( 'date', ['2019-03-01', '2019-03-31'])->get ();//dd($y2008Details);
    $aprDetails = Fuel::whereBetween ( 'date', ['2019-04-01', '2019-04-31']  )->get ();
    $mayDetails = Fuel::whereBetween ( 'date',['2019-05-01', '2019-05-31'] )->get ();
    $juneDetails = Fuel::whereBetween ( 'date', ['2019-06-01', '2019-06-31']  )->get ();
    $julyDetails = Fuel::whereBetween ( 'date', ['2019-07-01', '2019-07-31']  )->get ();
    $augDetails = Fuel::whereBetween ( 'date',['2019-08-01', '2019-08-31']  )->get ();



    $vehicleNames = Vehicle::select ( 'Registration_Number' )->groupBy ( 'Registration_Number' )->get ();

    $categoryArray = array (
         'Jan',
         'Feb',
        'Mar',
        'Apr',
        'May',
        'June',
        'Jul',
        'Aug',
        'Sep',
        'Oct' 
);
            $jan = [ ];
    $feb = [ ];
    $mar = [ ];
    $apr = [ ];
    $may = [ ];
    $june = [ ];
    $july = [ ];
    $aug = [ ];

    $dataArray = [ ];
            $vehicleNamesArray = [ ];


    foreach ( $vehicleNames as $Registration_Number )
         array_push ( $vehicleNamesArray,$Registration_Number->Registration_Number );



        foreach ( $janDetails as $det )
        array_push ( $jan, ( int ) $det->liters,$det->vehicle_generator );

        foreach ( $febDetails as $det )
        array_push ( $feb, ( int ) $det->liters, $det->vehicle_generator );

        foreach ( $marDetails as $det )
            array_push ( $mar, ( int ) $det->liters, $det->vehicle_generator );

        foreach ( $aprDetails as $det )
            array_push ( $apr, ( int ) $det->liters, $det->vehicle_generator );

        foreach ( $mayDetails as $det )
            array_push ( $may, ( int ) $det->liters, $det->vehicle_generator );

        foreach ( $juneDetails as $det )
            array_push ( $june, ( int ) $det->liters, $det->vehicle_generator );

        foreach ( $julyDetails as $det )
            array_push ( $july, ( int ) $det->liters, $det->vehicle_generator );
        foreach ( $augDetails as $det )
            array_push ( $aug, ( int ) $det->liters, $det->vehicle_generator );


    array_push ( $dataArray, $jan,$feb, $mar, $apr, $may,$june);
         //didn't add july & aug beacuse the loop wont work(i guess that     because they are empty) 


   for($i = 0; $i < count ( $dataArray ); $i ++){



    $chartArray ["series"] [] = array (

            "name" => $vehicleNamesArray[$i],
            "data" => $dataArray [$i] 
    );

   }


        $chartArray ["chart"] = array (
                "type" => "column"    
        );
        $chartArray ["title"] = array (
                "text" => "Monthy Consumption" 
        );
        $chartArray ["credits"] = array (
                "enabled" => false
        );


        $chartArray ["xAxis"] = array (
                "MOn" => $categoryArray 
        );
        $chartArray ["yAxis"] = array (
                "title" => array (
                "text" => "Liters ( L )" 
                ) 
        );

        return view ( 'query' )->withChartarray ( $chartArray );

    }
 }

Я ожидал, что он даст мне расход топлива за каждый месяц, но вместо этого он взял потребление каждого месяца и передал его одному транспортному средству в массиве vehicleNames. Я как-то знаю, что это вызвано циклом for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...