Paket Laravel yang ringan untuk melacak perubahan dari waktu ke waktu

Dengan bangga saya umumkan bahwa tim kami telah merilis paket baru yang disebut spatie / laravel-stats. Paket ini adalah solusi ringan untuk meringkas perubahan dalam database Anda dari waktu ke waktu.

Melacak perubahan #

Berikut adalah contoh singkat di mana kami akan melacak jumlah langganan dan pembatalan dari waktu ke waktu.

Pertama, Anda harus membuat kelas statistik.

use SpatieStatsBaseStats;

class SubscriptionStats extends BaseStats {}

Selanjutnya, Anda dapat menelepon increase ketika seseorang berlangganan dan decrease ketika seseorang membatalkan rencana mereka.

SubscriptionStats::increase(); 
SubscriptionStats::decrease() 

Dengan ini, Anda dapat menanyakan statistik. Berikut cara mendapatkan statistik langganan selama dua bulan terakhir, dikelompokkan berdasarkan minggu.

use SpatieStatsStatsQuery;

$stats = StatsQuery::for(SubscriptionStats::class)
    ->start(now()->subMonths(2))
    ->end(now()->subSecond())
    ->groupByWeek()
    ->get();

Ini akan mengembalikan array seperti ini:

[
    [
        '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,
    ],
]

Alih-alih meningkatkan dan menurunkan stat secara manual, Anda dapat langsung mengaturnya. Ini berguna ketika stat khusus Anda tidak dihitung oleh aplikasi Anda sendiri tetapi tinggal di tempat lain. Dengan menggunakan contoh langganan, mari kita bayangkan bahwa langganan ada di tempat lain dan ada panggilan API untuk menghitungnya.

$count = AnAPi::getSubscriptionCount(); 

SubscriptionStats::set($count);

Secara default, itu increase, decrease dan sets Metode mengasumsikan bahwa peristiwa yang menyebabkan perubahan statistik Anda terjadi sekarang. Secara opsional, Anda dapat meneruskan waktu tanggal sebagai parameter kedua untuk metode ini. Perubahan stat Anda akan dicatat seolah-olah itu terjadi pada saat itu.

SubscriptionStats::increase(1, $subscription->created_at); 

Bagaimana cara kerjanya di bawah tenda #

Implementasi paket ini sederhana. Prinsip dasar sumber acara digunakan: kami tidak menyimpan hasil, tetapi hanya perubahannya.

Paket menyimpan semua “acara” di stats_event meja

Di dalam StatsQuery kelas, Anda akan menemukan inti paket. Dalam nya get fungsi, Anda dapat melihat bahwa semua kejadian untuk periode tertentu diambil, diringkas dan dipetakan DataPoint kelas.

Penutupan #

Kami akan menggunakan laravel-stats di Flare, pelacak pengecualian kami untuk proyek Laravel / PHP / JavaScript, untuk melacak perubahan pelanggan dan metrik utama lainnya. Kami berharap paket ini dapat membantu proyek Anda juga.

Seperti disebutkan di atas, paket menggunakan pendekatan sumber acara ringan. Jika Anda ingin tahu lebih banyak tentang sumber acara, lihat kursus premium kami yang akan datang tentang sumber acara di Laravel.

Saya ingin berterima kasih kepada rekan saya Alex, yang melakukan sebagian besar pekerjaan membuat spatie / laravel-stats.

Lihat juga daftar paket yang telah dibuat oleh tim kami sebelumnya. Saya yakin ada sesuatu di sana untuk proyek Anda berikutnya.