Laravel 返回年份计数,即使计数为0
我试图用一些数据集制作一个图表,但是为了问这个问题,我只会包括一个 此时,如果我的控制器中有以下内容:Laravel 返回年份计数,即使计数为0,laravel,laravel-5,charts,eloquent,Laravel,Laravel 5,Charts,Eloquent,我试图用一些数据集制作一个图表,但是为了问这个问题,我只会包括一个 此时,如果我的控制器中有以下内容: $maintenancesForklifts = DB::table("equipment_attachments") ->join('equipment as equip', 'equip.id', '=', 'equipment_attachments.unitID')
$maintenancesForklifts =
DB::table("equipment_attachments")
->join('equipment as equip', 'equip.id', '=', 'equipment_attachments.unitID')
->select(DB::raw('year(date) as year'), DB::raw("COUNT(*) as count"))
->where('attachmentCategory','Maintenance')
->where('equip.unit_type',3)
->orderBy(DB::raw("year(date)"))
->groupBy(DB::raw("year(date)"))
->get();
我会把这个退回:
[{"year":2005,"count":2},{"year":2006,"count":2},{"year":2010,"count":4},{"year":2011,"count":1},{"year":2012,"count":2},{"year":2013,"count":1},{"year":2014,"count":10},{"year":2015,"count":7},{"year":2016,"count":6},{"year":2017,"count":19},{"year":2018,"count":4}]
正如你所看到的,如果我从2000年到现在,还差几年。你知道我怎样才能返回结果,让它们返回零计数的年份吗?一种方法是:
$years = collect(range(2000, now()->format('Y')))->map(function ($year) use ($maintenancesForklifts) {
return $maintenancesForklifts->firstWhere('year', $year) ?? (object)['year' => $year, 'count' => 0];
});
你是想要一个db特定的方式,还是在你从db获得数据后的几年里你对填充感到满意?加入与日期有关系吗?@RossWilson-我都同意,尽管我更喜欢db方式,使其可持续发展。但再说一次,我现在真的不在乎,只要我能做到work@undrftd-不,日期仅在表
设备\u附件上,与接头无关。您有开始年份吗?您建议将其放在上述相关代码中的什么位置?谢谢