justinbarkhuff/laravel-stats

基于spatie/laravel-stats的分支,支持PHP 7.4+和MySQL 5.7的向后兼容性

v1.1 2021-04-22 22:31 UTC

This package is auto-updated.

Last update: 2024-09-23 06:48:38 UTC


README

Latest Version on Packagist Tests Total Downloads

本包是一个轻量级解决方案,用于总结数据库随时间的变化。以下是一个快速示例,我们将跟踪订阅和取消的数量变化。

首先,您应该创建一个统计类。

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 或设置固定值

接下来,当统计信息应该更改时,您可以调用increasedecrease。在这个特定的例子中,当有人订阅时,应该调用increase,当有人取消他们的计划时,调用decrease

SubscriptionStats::increase(); // execute whenever somebody subscribes
SubscriptionStats::decrease(); // execute whenever somebody cancels the subscription;

除了手动增加和减少统计信息外,您可以直接设置它。这对于特定的统计信息不是由您的应用程序计算,而是存在于其他地方非常有用。使用订阅示例,让我们假设订阅存在于其他地方,并且有一个API调用来获取计数。

$count = AnAPi::getSubscriptionCount(); 

SubscriptionStats::set($count);

默认情况下,increasedecreasesets方法假设导致您的统计信息更改的事件是现在发生的。可选地,您可以将日期时间作为第二个参数传递给这些方法。您的统计信息更改将被记录为在那个时刻发生。

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)。请参阅许可文件以获取更多信息。