digitalcorehub / laravel-model-view-counter
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
Requires
- php: ^8.0
- illuminate/support: ^9.0|^10.0|^11.0|^12
- laravel/framework: ^9.2|^10.0|^11.0|^12
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.