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附件上,与接头无关。您有开始年份吗?您建议将其放在上述相关代码中的什么位置?谢谢