With Laravel Popular Package you can Track your most popular Eloquent Models based on unique hits in a time range and then sort by popularity in a time frame.
This project is not maintained anymore. We encourage you to use another well maintained solution that can archieve everything in here: https://github.com/cyrildewit/eloquent-viewable
Use the visitable trait on the model you intend to track
use \JordanMiguel\LaravelPopular\Traits\Visitable;
class Post extends Model
{
use Visitable;
...
}Here are some code examples:
// Adding a visit to the post. Recommended on the show() method of your controller.
$post->visit();
// Retrieving the count of visitors in a timeframe
$post->visitsDay();
$post->visitsWeek();
$post->visitsMonth();
$post->visitsBetween($from, $to);
$post->visitsForever();
// Ordering the posts by the most visited
Posts::popularLast(3)->get(); // Get popular posts on the last 3 days
Posts::popularDay()->get(); // Get posts ordered by the most visited on the last 24h
Posts::popularWeek()->get();
Posts::popularMonth()->get();
Posts::popularYear()->get();
Posts::popularBetween($from, $to)->get(); // Get posts ordered by the most visited in a given interval date
Posts::popularAllTime()->get();Via Composer
$ composer require jordanmiguel/laravel-popularIf you're on Laravel <= 5.4 add 'JordanMiguel\LaravelPopular\LaravelPopularServiceProvider::class', in your config/app.php to the end of the $providers array
'providers' => array(
'Illuminate\Foundation\Providers\ArtisanServiceProvider',
'Illuminate\Auth\AuthServiceProvider',
...
'JordanMiguel\LaravelPopular\LaravelPopularServiceProvider::class',
),Now, let's create our table on the database:
$ php artisan migrateWe're ready!
There is no test setup yet, please pull request if you do it =)
Feel free to Pull Request anytime!
The MIT License (MIT). Please see License File for more information.