Search by

digitalcorehub / laravel-model-view-counter

1batu

A Laravel package to count model views with caching support.

Package info

github.com/DigitalCoreHub/laravel-model-view-counter

pkg:composer/digitalcorehub/laravel-model-view-counter

Statistics

Installs: 0

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.0 2025-09-02 11:54 UTC

This package is not auto-updated.

Last update: 2026-09-16 08:12:41 UTC


README

Model View Counter, Laravel modellerinizin görüntülenme sayılarını takip etmenizi sağlayan ve cache yapısı kullanarak performansı optimize eden bir pakettir. Bu paket sayesinde, herhangi bir modelin kaç kez görüntülendiğini kolayca takip edebilir ve analiz edebilirsiniz.

Özellikler

  • Model Bazlı Görüntülenme Sayacı: Herhangi bir Laravel modelinin görüntülenme sayısını takip edin.
  • Cache Desteği: Görüntülenme sayıları cache’de tutularak performans artırılır.
  • Doğruluk Garantisi: Eşik değer aşıldığında cache’de biriken değerler güvenli bir şekilde veritabanına aktarılır.
  • Dağıtık Kilitleme: Birden fazla worker aynı modeli artırırken veri kaybını engellemek için cache işlemleri kilitlenir.
  • Kolay Entegrasyon: Modellerinize basit bir trait ekleyerek hızlıca kullanmaya başlayın.
  • Event ve Listener: Laravel’in event sistemi kullanılarak esnek bir yapı sunulur.
  • Cache Temizleme Komutu: Cache’i temizlemek için Artisan komutu içerir.

Kurulum

composer require digitalcorehub/laravel-model-view-counter

# Yapılandırma dosyasını ve migration'ı yayınlayın
php artisan vendor:publish --provider="DigitalCoreHub\LaravelModelViewCounter\LaravelModelViewCounterServiceProvider"
php artisan migrate

Paket Packagist üzerinde yayınlandığı için ek depo tanımlamanız gerekmez.

Yapılandırma

config/model-view-counter.php dosyasında paketinizin ayarlarını yapılandırabilirsiniz:

return [
    'models' => [
        /*
            Örnek:
            App\Models\User::class,
            App\Models\Blog::class,
        */
    ],
    'cache_enabled' => true,        // Cache özelliğini etkinleştirmek için
    'cache_threshold' => 10,        // Cache'de birikmesi gereken minimum sayı
    'cache_key' => 'model_view_counts',
    'cache_ttl' => 86_400,          // Cache verilerinin saniye cinsinden yaşam süresi (opsiyonel)
    'cache_lock_seconds' => 5,      // Cache mutasyonları sırasında dağıtık kilidi ne kadar tutalım
];

Kullanmak istediğiniz modelleri tanımlamayı unutmayın.

Kullanım

Modellerinize Trait’i Ekleyin

namespace App\Models;

use Illuminate\Foundation\Auth\User as Authenticatable;
use DigitalCoreHub\LaravelModelViewCounter\Traits\CountableView;

class User extends Authenticatable
{
    use CountableView;
}

Tetikleyin

use DigitalCoreHub\LaravelModelViewCounter\Events\ModelViewed;

// Modeliniz görüntülendiğinde ModelViewed event’ini tetikleyin.
Route::get('users/{user:id}', function (User $user) {
    event(new ModelViewed($user));
});

Görüntülenme Sayısını Çekin

<!-- Görüntülenme sayısını çekin -->
<h1>{{ $user->name }}</h1>
<p>Görüntülenme Sayısı: {{ $user->viewCount() }}</p>

viewCount() metodu cache’de bekleyen değerleri de hesaba katarak en güncel sonucu döndürür.

Görüntülenme Sayısını Arttırın

// Görüntülenme sayısını gerekirse manuel olarak arttırın.
$user->incrementViewCount();

// Birden fazla görüntülenmeyi tek seferde yansıtabilirsiniz.
$user->incrementViewCount(5);

Cache'i Elle Boşaltın

Bir maintenance senaryosunda cache’de bekleyen tüm değerleri veritabanına göndermek için Artisan komutunu kullanabilirsiniz:

php artisan model-view-counter:flush

Komut, cache kilidini güvenli biçimde alıp bırakır; kilit alınamazsa yine de kalan değerleri kaybetmeden aktarır.

Gelecek Geliştirmeler

  • Zaman Serili Analitik: Her model için saatlik/günlük/haftalık görüntülenme özetleri üretip kampanya performansını ve trafik trendlerini takip etmeyi kolaylaştıracak bir raporlama katmanı eklenebilir. Paket şu an toplam görüntülenmeleri sunuyor; bu tarz özet tablolara geçiş, trend bazlı görselleştirmeler ve anomalileri algılama gibi ileri kullanım senaryolarını destekler.