You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel如何从数据库获取结构化数据实现产奶量统计图表

Laravel框架下奶牛场收奶量统计查询实现

基于需求,两类统计逻辑的实现代码如下,默认收奶记录对应模型为MilkCollection,核心字段包含collection_date(收奶日期,datetime/timestamp类型)、animal_id(动物唯一编号)、milk_yield(单次收奶重量,浮点型)。

一、指定周期内按日期维度统计总收奶量

该接口返回结果可直接对接日期维度的折线图、柱状图组件:

// 可根据前端传参动态调整统计周期,示例为最近30天
$startDate = now()->subDays(30)->startOfDay();
$endDate = now()->endOfDay();

// 基础分组查询
$dailyStat = MilkCollection::query()
    ->whereBetween('collection_date', [$startDate, $endDate])
    ->selectRaw('DATE(collection_date) as stat_date, SUM(milk_yield) as total_milk')
    ->groupBy('stat_date')
    ->orderBy('stat_date', 'asc')
    ->get();

如果需要补全统计周期内无收奶记录的日期(避免图表横轴出现日期断层),可以加一段补零逻辑:

$dateRange = \Carbon\CarbonPeriod::create($startDate, $endDate);
$fullDailyData = collect($dateRange)->map(function ($dayItem) use ($dailyStat) {
    $currentDate = $dayItem->toDateString();
    $matched = $dailyStat->firstWhere('stat_date', $currentDate);
    return [
        'stat_date' => $currentDate,
        'total_milk' => $matched ? $matched->total_milk : 0
    ];
});

返回数据格式示例:

[
  {"stat_date":"2024-05-01","total_milk":1247.8},
  {"stat_date":"2024-05-02","total_milk":1302.4}
]

二、指定周期内按动物维度统计总收奶量

该接口返回结果可对接动物维度的排行柱状图、明细表格:

$animalStat = MilkCollection::query()
    ->whereBetween('collection_date', [$startDate, $endDate])
    ->selectRaw('animal_id, SUM(milk_yield) as total_milk, COUNT(id) as record_count')
    // 若需要关联动物基础信息表获取牛号、品种、栏位等信息,放开以下注释即可
    // ->leftJoin('animals', 'animals.id', '=', 'milk_collections.animal_id')
    // ->addSelect('animals.animal_no', 'animals.breed', 'animals.pen_id')
    ->groupBy('animal_id')
    ->orderBy('total_milk', 'desc')
    ->get();

返回数据格式示例:

[
  {"animal_id":107,"total_milk":492.5,"record_count":60},
  {"animal_id":98,"total_milk":468.2,"record_count":60}
]

注意事项:

  • 若collection_date是带时分秒的时间类型,分组时必须用DATE()函数截取日期部分,否则会按精确时间点分组导致统计错误
  • 数据量较大时,可以给collection_date、animal_id字段加联合索引,提升查询速度

内容的提问来源于stack exchange,提问作者Rahul W

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.16 23:21:21