Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compteur de visiteurs Laravel

Je ne suis pas sûr à 100% de cela, mais vous devriez pouvoir faire quelque chose comme ça. Il n'a pas été testé et il existe peut-être une manière plus élégante de le faire, mais c'est un point de départ pour vous.

Changer de tableau

Modifier la visit_date (datetime) colonne dans visit_date (date) et visit_time (time) colonnes, puis créez un id colonne comme clé primaire. Enfin, définissez ip + date être une clé unique pour s'assurer que vous ne pouvez pas saisir la même adresse IP deux fois pendant une journée.

Créer un modèle Eloquent

C'est juste pour plus de facilité :créez un modèle Eloquent pour la table afin de ne pas avoir à utiliser Fluent (générateur de requêtes) tout le temps :

class Tracker extends Eloquent {

    public $attributes = [ 'hits' => 0 ];

    protected $fillable = [ 'ip', 'date' ];
    protected $table = 'table_name';

    public static function boot() {
        // Any time the instance is updated (but not created)
        static::saving( function ($tracker) {
            $tracker->visit_time = date('H:i:s');
            $tracker->hits++;
        } );
    }

    public static function hit() {
        static::firstOrCreate([
                  'ip'   => $_SERVER['REMOTE_ADDR'],
                  'date' => date('Y-m-d'),
              ])->save();
    }

}

Vous devriez maintenant pouvoir faire ce que vous voulez en appelant simplement ceci :

Tracker::hit();