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

在Laravel Nova中实现Offer模型按年月分组的聚合数据展示是否可行?

实现方案说明

完全可以在Nova中直接实现该聚合展示效果,不需要仅依赖导出报表功能,主流实现方式有两种,可根据你的实际需求选择:

方案一:使用Nova原生Lens实现(推荐,符合原生开发规范)

Lens是Nova专门提供的自定义数据视图能力,改动成本最低:

  • 第一步:生成Lens文件,执行命令:
    php artisan nova:lens OfferMonthlyAggregation
  • 第二步:修改Lens文件内的query方法,写入分组聚合逻辑,示例代码参考:
public function query(Request $request, $query)
{
    // 可根据业务需求调整聚合字段,比如统计Offer数量、总金额、平均金额等
    return $query->selectRaw('YEAR(created_at) as year, MONTH(created_at) as month, COUNT(id) as offer_total, SUM(amount) as amount_total')
        ->groupBy('year', 'month')
        ->orderBy('year', 'desc')
        ->orderBy('month', 'desc');
}
  • 第三步:修改fields方法定义要展示的聚合列:
public function fields(Request $request)
{
    return [
        Text::make('年份', 'year'),
        Text::make('月份', 'month'),
        Number::make('Offer总数', 'offer_total'),
        Currency::make('总金额', 'amount_total'),
    ];
}
  • 第四步:将该Lens注册到Offer Resource的lenses方法中,即可在Offer Resource的导航栏看到聚合视图入口,点击后展示的就是按年月分组的聚合数据,同时支持Nova原生的排序、筛选等能力。

方案二:自定义Nova卡片/工具实现(适合需要完全匹配参考图折叠效果)

如果你需要参考图中按年折叠、点击展开查看月度数据的交互效果,可以自定义Nova卡片,写简单的Vue组件渲染数据,灵活度最高,可以1:1还原你要的展示效果。如果不想自己开发前端,也可以用Nova社区的分组列表扩展包实现折叠交互。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:03