Mysql
 sql >> Database >  >> RDS >> Mysql

Contatore visitatori di Laravel

Non ne sono sicuro al 100%, ma dovresti essere in grado di fare qualcosa del genere. Non è stato testato e potrebbe esserci un modo più elegante per farlo, ma è un punto di partenza per te.

Cambia la tabella

Modifica il visit_date (datetime) colonna in visit_date (date) e visit_time (time) colonne, quindi crea un id colonna come chiave primaria. Infine, imposta ip + date essere una chiave univoca per garantire che non sia possibile inserire lo stesso IP due volte per un giorno.

Crea un modello eloquente

Questo è solo per comodità:crea un modello Eloquent per la tabella in modo da non dover usare sempre Fluent (query builder):

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

}

Ora dovresti essere in grado di fare quello che vuoi semplicemente chiamando questo:

Tracker::hit();