sql >> Base de Datos >  >> RDS >> Mysql

Contador de visitantes de Laravel

No estoy 100% seguro de esto, pero deberías poder hacer algo como esto. No está probado y puede haber una forma más elegante de hacerlo, pero es un punto de partida para ti.

Cambiar la mesa

Cambiar el visit_date (datetime) columna en visit_date (date) y visit_time (time) columnas, luego crea un id columna para que sea la clave principal. Por último, configure ip + date ser una clave única para garantizar que no se pueda ingresar la misma IP dos veces durante un día.

Crear un modelo Elocuente

Esto es solo para simplificar:crea un modelo Eloquent para la tabla para que no tengas que usar Fluent (constructor de consultas) todo el tiempo:

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

}

Ahora deberías poder hacer lo que quieras simplemente llamando a esto:

Tracker::hit();