flowframe/laravel-trend

轻松生成模型趋势

v0.2.0 2024-03-14 13:45 UTC

This package is auto-updated.

Last update: 2024-09-14 14:50:30 UTC


README

为您的模型生成趋势。轻松生成图表或报告。

为什么?

大多数应用程序都需要生成图表或报告。重复进行这个过程可能会很痛苦。这就是我们创建了一个流畅的Laravel包来解决这个问题。

您可以对每分钟、每小时、每天、每月和每年的平均数、最小值、最大值和总计进行聚合。

安装

您可以通过composer安装此包

composer require flowframe/laravel-trend

用法

要为您的模型生成趋势,导入Flowframe\Trend\Trend类,并传递一个模型或查询。

示例

// Totals per month
$trend = Trend::model(User::class)
    ->between(
        start: now()->startOfYear(),
        end: now()->endOfYear(),
    )
    ->perMonth()
    ->count();

// Average user weight where name starts with a over a span of 11 years, results are grouped per year
$trend = Trend::query(User::where('name', 'like', 'a%'))
    ->between(
        start: now()->startOfYear()->subYears(10),
        end: now()->endOfYear(),
    )
    ->perYear()
    ->average('weight');

开始趋势

您必须使用::model()::query()开始趋势。两者之间的区别在于,使用::query()允许您添加额外的过滤器,就像您习惯使用eloquent一样。使用::model()将仅按原样消费它。

// Model
Trend::model(Order::class)
    ->between(...)
    ->perDay()
    ->count();

// More specific order query
Trend::query(
    Order::query()
        ->hasBeenPaid()
        ->hasBeenShipped()
)
    ->between(...)
    ->perDay()
    ->count();

间隔

您可以使用以下聚合间隔

  • perMinute()
  • perHour()
  • perDay()
  • perMonth()
  • perYear()

聚合

您可以使用以下聚合

  • sum('column')
  • average('column')
  • max('column')
  • min('column')
  • count('*')

日期列

默认情况下,laravel-trend假定正在执行操作的模型有一个created_at日期列。如果您的模型使用不同的列名作为日期或您想使用不同的列,应使用dateColumn(string $column)方法指定它。

示例

Trend::model(Order::class)
    ->dateColumn('custom_date_column')
    ->between(...)
    ->perDay()
    ->count();

这允许您处理具有自定义日期列名称的模型,或者当您想根据不同的日期列分析数据时。

驱动程序

我们目前支持以下三个驱动程序

  • MySQL
  • MariaDB
  • SQLite
  • PostgreSQL

安全漏洞

请参阅我们的安全策略了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。