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

Laravel如何筛选指定年份的工单统计数据并展示?

实现Laravel工单统计仅展示特定年份的方法

方法一:控制器层面过滤(推荐,减少数据查询量)

直接在数据库查询阶段添加年份过滤条件,只获取目标年份的数据,性能更优:

固定年份过滤

比如要展示2024年的统计数据:

$targetYear = 2024;
$test = DB::table('tickets')
      ->selectRaw('YEAR(created_at) as anno, MONTH(created_at) as mese, count(id) as totale')
      ->whereYear('created_at', $targetYear) // 添加年份过滤条件
      ->groupBy('anno', 'mese')
      ->get();

动态年份过滤

如果需要根据请求参数动态切换年份(比如URL传参?year=2024):

// 默认展示当前年份,可通过请求参数覆盖
$targetYear = request()->input('year', date('Y'));
$test = DB::table('tickets')
      ->selectRaw('YEAR(created_at) as anno, MONTH(created_at) as mese, count(id) as totale')
      ->whereYear('created_at', $targetYear)
      ->groupBy('anno', 'mese')
      ->get();

方法二:视图层面过滤(临时场景使用)

如果不想修改控制器代码,可在Blade视图中通过条件判断过滤年份:

<table>
 <tbody>
   @php
    \Carbon\Carbon::setLocale('it'); // 移到循环外,避免重复执行
   @endphp
   @foreach($test as $tes)
     {{-- 只渲染目标年份的数据,这里以2024为例 --}}
     @if($tes->anno == 2024)
     <tr>
       <td>{{$tes->anno}}</td>
       <td>{{\Carbon\Carbon::createFromFormat('m',$tes->mese)->translatedFormat('F')}}</td>
       <td>{{$tes->totale}}</td>
    </tr>
     @endif
   @endforeach
  </tbody>
</table>

额外优化建议

把Carbon语言设置移到全局配置,避免在视图中重复执行:
在app/Providers/AppServiceProvider.php的boot方法中添加:

use Carbon\Carbon;

public function boot()
{
    Carbon::setLocale('it');
}

之后视图里就不需要再写\Carbon\Carbon::setLocale('it');了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:52:36