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