beranidigital / laravel-trend
轻松生成模型趋势。现在支持更多时间间隔
Requires
- php: ^8.2
- illuminate/contracts: ^8.37|^9|^10.0|^11.0
- spatie/laravel-package-tools: ^1.4.3
Requires (Dev)
- fakerphp/faker: ^1.23
- nunomaduro/collision: ^5.3|^6.1|^8.0
- orchestra/testbench: ^6.15|^7.0|^8.0|^9.0
- pestphp/pest: ^1.18|^2.34
- pestphp/pest-plugin-laravel: ^1.1|^2.3
- spatie/laravel-ray: ^1.23
- vimeo/psalm: ^4.8|^5.6
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)。请参阅许可证文件以获取更多信息。