Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Contador de visitantes Laravel


Não tenho 100% de certeza sobre isso, mas você deve ser capaz de fazer algo assim. Não foi testado e pode haver uma maneira mais elegante de fazer isso, mas é um ponto de partida para você.

Alterar a tabela

Altere a visit_date (datetime) coluna em visit_date (date) e visit_time (time) colunas e crie um id coluna para ser a chave primária. Por fim, defina ip + date para ser uma chave exclusiva para garantir que você não possa ter o mesmo IP inserido duas vezes por um dia.

Crie um modelo Eloquent

Isso é apenas para facilitar:faça um modelo Eloquent para a tabela para que você não precise usar o Fluent (construtor de consultas) o tempo todo:
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();
    }

}

Agora você deve ser capaz de fazer o que quiser apenas chamando isto:
Tracker::hit();