beranidigital/laravel-trend

轻松生成模型趋势。现在支持更多时间间隔

0.2.2 2024-05-24 01:03 UTC

This package is auto-updated.

Last update: 2024-09-22 08:58:52 UTC


README

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

为什么选择我们?

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

您可以根据每分钟、每小时、每天、每月和每年的时间间隔聚合平均值、最小值、最大值和总计。

安装

您可以通过composer安装此包

composer require beranidigital/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())
  • 每周(perWeek())
  • 每月(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();

覆盖日期格式

默认情况下,laravel-trend使用Y-m-d H:i:s格式作为日期列。如果您想使用不同的格式,您应该使用Trend::$carbonFormats属性指定它。

示例

Flowframe\Trend\Trend::$carbonFormats['minute'] = 'Y-m-d H:i:00';
Flowframe\Trend\Trend::$carbonFormats['hour'] = 'Y-m-d H:00:00';
Flowframe\Trend\Trend::$carbonFormats['day'] = 'd-M-Y';
Flowframe\Trend\Trend::$carbonFormats['week'] = 'W/Y';
Flowframe\Trend\Trend::$carbonFormats['month'] = 'Y-m';
Flowframe\Trend\Trend::$carbonFormats['year'] = 'Y';

这允许您与具有自定义日期列名的模型一起工作,或者当您想根据不同的日期列分析数据时。

驱动器

我们目前支持三种驱动器

  • MySQL
  • MariaDB
  • SQLite
  • PostgreSQL

安全漏洞

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

鸣谢

许可证

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