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.
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-popular
If 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 migrate
We'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.