База данных автомобилей:
Данные по топливу за январь и февраль:
Передача данных о ян в Bjl 9829:
Я хочу, чтобы график отображал ежемесячное потребление всех транспортных средств, но вместо этого он берет 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.