Nejsem si tím 100% jistý, ale měli byste být schopni něco takového udělat. Není to testováno a možná existuje elegantnější způsob, jak to udělat, ale je to pro vás výchozí bod.
Změňte tabulku
Změňte visit_date (datetime)
do visit_date (date)
a visit_time (time)
sloupce a poté vytvořte id
jako primární klíč. Nakonec nastavte ip + date
být jedinečným klíčem, který zajistí, že nebudete moci zadat stejnou IP adresu dvakrát na jeden den.
Vytvořte výmluvný model
To je jen pro usnadnění:vytvořte si model Eloquent pro stůl, abyste nemuseli neustále používat Fluent (tvorbu dotazů):
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();
}
}
Nyní byste měli být schopni dělat, co chcete, pouhým zavoláním:
Tracker::hit();