sql >> Databasteknik >  >> RDS >> Mysql

Laravel besöksdisk

Jag är inte 100% säker på detta, men du borde kunna göra något sånt här. Det är inte testat, och det kan finnas ett mer elegant sätt att göra det på, men det är en utgångspunkt för dig.

Ändra tabellen

Ändra visit_date (datetime) kolumnen till visit_date (date) och visit_time (time) kolumner och skapa sedan ett id kolumn för att vara den primära nyckeln. Slutligen, ställ in ip + date att vara en unik nyckel för att säkerställa att du inte kan få samma IP-adress in två gånger under en dag.

Skapa en vältalig modell

Detta är bara för enkelhetens skull:gör en vältalig modell för bordet så att du inte behöver använda Fluent (frågebyggare) hela tiden:

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

}

Nu ska du kunna göra vad du vill genom att bara kalla detta:

Tracker::hit();


  1. MySQL LOAD DATA INFILE butiksradnummer

  2. Få ordning på de N sista raderna i databasen?

  3. mysql sortering och rangordning uttalande

  4. SQL känner inte igen kolumnaliaset i where-satsen