GithubHelp home page GithubHelp logo

jordanmiguel / laravel-popular Goto Github PK

View Code? Open in Web Editor NEW
64.0 5.0 31.0 50 KB

A Laravel package for tracking popular entries(by Models) of a website in a certain time

License: MIT License

PHP 100.00%

laravel-popular's Introduction

Laravel Popular (Laravel Popularity)

Latest Version on Packagist MIT licensed

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.

Discontinued

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

Usage

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();

Install

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!

Testing

There is no test setup yet, please pull request if you do it =)

Contributing

Feel free to Pull Request anytime!

Author

License

The MIT License (MIT). Please see License File for more information.

laravel-popular's People

Contributors

creator4ever avatar jordanmiguel avatar jyrkidn avatar krisnicolaou avatar mouadziani avatar oliuz avatar smayzes avatar thatleeguy avatar thylerz avatar xoshbin avatar yondifon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

laravel-popular's Issues

popularAllTime()

It would be nice if this package has a method popularAllTime(). PR?

Support UUID

I recently ran this in an application that uses UUID as primary keys.
It's not supported. I think a configuration file should be added to the package, user can publish and choose if the package uses morphs or uuidmorphs

Something like

// config/popular.php

return [
    'uses_uuid' => true
];

Laravel 8 Support

Problem 1
    - Conclusion: don't install jordanmiguel/laravel-popular 1.0.6
    - Conclusion: don't install jordanmiguel/laravel-popular 1.0.5
    - Conclusion: don't install jordanmiguel/laravel-popular v1.0.4
    - Conclusion: don't install jordanmiguel/laravel-popular v1.0.3
    - Conclusion: don't install jordanmiguel/laravel-popular v1.0.2
    - Conclusion: don't install jordanmiguel/laravel-popular v1.0.1
    - Conclusion: remove laravel/framework v8.21.0
    - Installation request for jordanmiguel/laravel-popular ^1.0 -> satisfiable by jordanmiguel/laravel-popular[1.0.5, 1.0.6, v1.0.0, v1.0.1, v1.0.2, v1.0.3, v1.0.4].
    - Conclusion: don't install laravel/framework v8.21.0
    - jordanmiguel/laravel-popular v1.0.0 requires illuminate/support ~5.1 -> satisfiable by illuminate/support[5.1.x-dev, 5.2.x-dev, 5.3.x-dev, 5.4.x-dev, 5.5.x-dev, 5.6.x-dev, 5.7.17, 5.7.18, 5.7.19, 5.7.x-dev, 5.8.x-dev, v5.1.1, v5.1.13, v5.1.16, v5.1.2, v5.1.20, v5.1.22, v5.1.25, v5.1.28, v5.1.30, v5.1.31, v5.1.41, v5.1.6, v5.1.8, v5.2.0, v5.2.19, v5.2.21, v5.2.24, v5.2.25, v5.2.26, v5.2.27, v5.2.28, v5.2.31, v5.2.32, v5.2.37, v5.2.43, v5.2.45, v5.2.6, v5.2.7, v5.3.0, v5.3.16, v5.3.23, v5.3.4, v5.4.0, v5.4.13, v5.4.17, v5.4.19, v5.4.27, v5.4.36, v5.4.9, v5.5.0, v5.5.16, v5.5.17, v5.5.2, v5.5.28, v5.5.33, v5.5.34, v5.5.35, v5.5.36, v5.5.37, v5.5.39, v5.5.40, v5.5.41, v5.5.43, v5.5.44, v5.6.0, v5.6.1, v5.6.10, v5.6.11, v5.6.12, v5.6.13, v5.6.14, v5.6.15, v5.6.16, v5.6.17, v5.6.19, v5.6.2, v5.6.20, v5.6.21, v5.6.22, v5.6.23, v5.6.24, v5.6.25, v5.6.26, v5.6.27, v5.6.28, v5.6.29, v5.6.3, v5.6.30, v5.6.31, v5.6.32, v5.6.33, v5.6.34, v5.6.35, v5.6.36, v5.6.37, v5.6.38, v5.6.39, v5.6.4, v5.6.5, v5.6.6, v5.6.7, v5.6.8, v5.6.9, v5.7.0, v5.7.1, v5.7.10, v5.7.11, v5.7.15, v5.7.2, v5.7.20, v5.7.21, v5.7.22, v5.7.23, v5.7.26, v5.7.27, v5.7.28, v5.7.3, v5.7.4, v5.7.5, v5.7.6, v5.7.7, v5.7.8, v5.7.9, v5.8.0, v5.8.11, v5.8.12, v5.8.14, v5.8.15, v5.8.17, v5.8.18, v5.8.19, v5.8.2, v5.8.20, v5.8.22, v5.8.24, v5.8.27, v5.8.28, v5.8.29, v5.8.3, v5.8.30, v5.8.31, v5.8.32, v5.8.33, v5.8.34, v5.8.35, v5.8.36, v5.8.4, v5.8.8, v5.8.9].
    - don't install illuminate/support 5.5.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.16|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.17|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.2|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.33|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.34|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.35|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.36|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.37|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.39|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.40|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.41|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.43|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.5.44|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.6.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.1|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.10|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.11|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.12|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.13|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.14|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.15|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.16|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.17|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.19|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.2|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.20|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.21|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.22|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.23|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.24|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.25|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.26|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.27|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.29|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.3|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.30|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.31|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.32|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.33|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.34|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.35|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.36|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.37|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.38|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.39|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.4|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.5|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.6|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.7|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.8|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.6.9|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.7.17|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.7.18|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.7.19|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.7.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.1|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.10|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.11|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.15|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.2|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.20|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.21|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.22|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.23|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.26|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.27|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.3|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.4|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.5|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.6|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.7|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.8|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.7.9|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.8.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.11|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.12|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.14|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.15|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.17|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.18|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.19|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.2|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.20|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.22|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.24|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.27|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.29|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.3|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.30|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.31|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.32|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.33|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.34|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.35|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.36|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.4|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.8|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.8.9|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.1.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.2.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.3.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support 5.4.x-dev|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.1|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.13|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.16|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.2|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.20|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.22|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.25|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.30|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.31|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.41|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.6|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.1.8|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.19|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.21|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.24|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.25|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.26|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.27|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.28|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.31|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.32|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.37|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.43|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.45|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.6|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.2.7|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.3.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.3.16|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.3.23|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.3.4|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.0|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.13|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.17|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.19|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.27|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.36|don't install laravel/framework v8.21.0
    - don't install illuminate/support v5.4.9|don't install laravel/framework v8.21.0
    - Installation request for laravel/framework (locked at v8.21.0, required as ^8.12) -> satisfiable by laravel/framework[v8.21.0].

Version Support

I've encountered an issue during installation
Error:
Your requirements could not be resolved to an installable set of packages
Installation failed, reverting ./composer.json and ./composer.lock to their original content.

popularAllTime and popularYear Not Working

hi ,
thanks for awesome package.

laravel : 5.7
php : 7.2

Post Model:

...
use \JordanMiguel\LaravelPopular\Traits\Visitable;

class Post  extends Model
{
    use Notifiable;
    use Translatable;
    use Sluggable;
    use Visitable;
    
....

visit table migrated and every thing works fine.
when i call this methods:

$post->visit();

$post->visitsDay();
$post->visitsWeek();
$post->visitsMonth();
$post->visitsForever();

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();

their works fine. but when i call this mehotds:

Posts::popularYear()->get();
Posts::popularAllTime()->get();

it says :

Call to undefined method App\Post::popularAllTime()
Or
Call to undefined method App\Post::popularAllTime()

please help.

Please help me

SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes (SQL: alter table visits add unique visits_ip_visitable_id_visitable_type_d ate_unique(ip, visitable_id, visitable_type, date))

Connection no model

Interessante é criar um arquivo de configuração com a connection que será utilizada na migration e no model. Pois se uma aplicação é construída por exemplo sobre MySQL, efetuar a inserção desses registros, que são muitos, é morte na certa.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.