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