justinbarkhuff / laravel-stats
基于spatie/laravel-stats的分支,支持PHP 7.4+和MySQL 5.7的向后兼容性
Requires
- php: ^7.4
- illuminate/contracts: ^8.0
- spatie/laravel-package-tools: ^1.6
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16
- orchestra/testbench: ^6.0
- phpunit/phpunit: ^9.3
- vimeo/psalm: ^3.11
This package is auto-updated.
Last update: 2024-09-23 06:48:38 UTC
README
本包是一个轻量级解决方案,用于总结数据库随时间的变化。以下是一个快速示例,我们将跟踪订阅和取消的数量变化。
首先,您应该创建一个统计类。
use Spatie\Stats\BaseStats; class SubscriptionStats extends BaseStats {}
接下来,当有人订阅时,您可以调用它的increase
方法,当有人取消他们的计划时,调用decrease
方法。
SubscriptionStats::increase(); // execute whenever somebody subscribes SubscriptionStats::decrease() // execute whenever somebody cancels the subscription;
有了这些,您可以查询统计信息。以下是如何按周分组获取过去两个月内的订阅统计信息。
use Spatie\Stats\StatsQuery; $stats = StatsQuery::for(SubscriptionStats::class) ->start(now()->subMonths(2)) ->end(now()->subSecond()) ->groupByWeek() ->get();
这将返回一个类似这样的数组
[ [ 'start' => '2020-01-01', 'end' => '2020-01-08', 'value' => 102, 'increments' => 32, 'decrements' => 20, 'difference' => 12, ], [ 'start' => '2020-01-08', 'end' => '2020-01-15', 'value' => 114, 'increments' => 63, 'decrements' => 30, 'difference' => 33, ], ]
支持我们
我们投入了大量资源来创建最佳类别的开源包。您可以通过购买我们的付费产品之一来支持我们。
我们非常感谢您从家乡寄来明信片,提及您正在使用我们的哪个包。您可以在我们的联系页面上找到我们的地址。我们将发布在我们的虚拟明信片墙上。
安装
您可以通过composer安装此包
composer require justinbarkhuff/laravel-stats
您必须使用以下命令发布和运行迁移
php artisan vendor:publish --provider="Spatie\Stats\StatsServiceProvider" --tag="stats-migrations" php artisan migrate
用法
步骤 1:创建统计类
首先,您应该创建一个统计类。此类负责配置如何存储特定的统计信息。默认情况下,它不需要任何配置。
use Spatie\Stats\BaseStats; class SubscriptionStats extends BaseStats {}
默认情况下,类的名称将用于在数据库中存储统计信息。要自定义使用的键,请使用getName
use Spatie\Stats\BaseStats; class SubscriptionStats extends BaseStats { public function getName() : string{ return 'my-custom-name'; // stats will be stored with using name `my-custom-name` } }
步骤 2:调用 increase 和 decrease 或设置固定值
接下来,当统计信息应该更改时,您可以调用increase
、decrease
。在这个特定的例子中,当有人订阅时,应该调用increase
,当有人取消他们的计划时,调用decrease
。
SubscriptionStats::increase(); // execute whenever somebody subscribes SubscriptionStats::decrease(); // execute whenever somebody cancels the subscription;
除了手动增加和减少统计信息外,您可以直接设置它。这对于特定的统计信息不是由您的应用程序计算,而是存在于其他地方非常有用。使用订阅示例,让我们假设订阅存在于其他地方,并且有一个API调用来获取计数。
$count = AnAPi::getSubscriptionCount(); SubscriptionStats::set($count);
默认情况下,increase
、decrease
和sets
方法假设导致您的统计信息更改的事件是现在发生的。可选地,您可以将日期时间作为第二个参数传递给这些方法。您的统计信息更改将被记录为在那个时刻发生。
SubscriptionStats::increase(1, $subscription->created_at);
步骤 3:查询统计信息
有了这些,您可以查询统计信息。您可以获取特定时间段内的统计信息,并按日、周、月分组。
以下是如何按周分组获取过去两个月的订阅统计信息。
$stats = SubscriptionStats::query() ->start(now()->subMonths(2)) ->end(now()->subSecond()) ->groupByWeek() ->get();
这将返回一个包含可数组的Spatie\Stats\DataPoint
对象的数组。这些对象可以像这样转换为数组
// output of $stats->toArray(): [ [ 'start' => '2020-01-01', 'end' => '2020-01-08', 'value' => 102, 'increments' => 32, 'decrements' => 20, 'difference' => 12, ], [ 'start' => '2020-01-08', 'end' => '2020-01-15', 'value' => 114, 'increments' => 63, 'decrements' => 30, 'difference' => 33, ], ]
测试
composer test
变更日志
请参阅变更日志了解最近更改的更多信息。
贡献
请参阅贡献指南获取详细信息。
安全漏洞
请查阅我们的安全策略,了解如何报告安全漏洞。
鸣谢
许可协议
MIT许可协议(MIT)。请参阅许可文件以获取更多信息。