Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Licznik odwiedzających Laravel

Nie jestem tego w 100% pewien, ale powinieneś być w stanie zrobić coś takiego. Nie został przetestowany i może istnieje bardziej elegancki sposób na zrobienie tego, ale jest to punkt wyjścia dla Ciebie.

Zmień tabelę

Zmień visit_date (datetime) kolumna do visit_date (date) i visit_time (time) kolumny, a następnie utwórz id kolumna będzie kluczem podstawowym. Na koniec ustaw ip + date być unikalnym kluczem, aby zapewnić, że ten sam adres IP nie będzie wprowadzony dwa razy przez jeden dzień.

Utwórz elokwentny model

To tylko dla ułatwienia:stwórz Eloquent model dla stołu, aby nie musiał cały czas używać Fluent (konstruktora zapytań):

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

}

Teraz powinieneś być w stanie zrobić to, co chcesz, po prostu wywołując to:

Tracker::hit();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. procedura składowana mysql:użycie zadeklarowanych zmiennych w instrukcji limit zwraca błąd

  2. Wybierz największą wartość na każde ostatnie 7 dni

  3. com.mysql.jdbc.exceptions.MySQLSyntaxErrorException podczas korzystania z PreparedStatement

  4. Wybierz wszystkie wiersze, które mają przynajmniej listę funkcji

  5. usuń wiersze z wielu tabel