sql >> Database >  >> RDS >> Mysql

Laravel bezoekersteller

Ik ben hier niet 100% zeker van, maar je zou zoiets moeten kunnen doen. Het is niet getest en er is misschien een elegantere manier om het te doen, maar het is een startpunt voor jou.

Verander de tabel

Wijzig de visit_date (datetime) kolom in visit_date (date) en visit_time (time) kolommen en maak vervolgens een id kolom om de primaire sleutel te zijn. Stel ten slotte ip + date in om een ​​unieke sleutel te zijn om ervoor te zorgen dat hetzelfde IP-adres niet twee keer per dag kan worden ingevoerd.

Maak een welsprekend model

Dit is gewoon voor het gemak:maak een Eloquent-model voor de tafel, zodat je niet altijd Fluent (querybuilder) hoeft te gebruiken:

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 zou je moeten kunnen doen wat je wilt door dit gewoon te noemen:

Tracker::hit();


  1. 12c Gegevensbestanden online verplaatsen

  2. Hoe voeg ik meerdere rijen in een enkele invoeginstructie in?

  3. Heroku pg:pull kan schema niet invullen

  4. ScaleGrid-machtigingen configureren op AWS met behulp van een IAM-beleidssjabloon