Je ne suis pas sûr à 100% de cela, mais vous devriez pouvoir faire quelque chose comme ça. Il n'a pas été testé et il existe peut-être une manière plus élégante de le faire, mais c'est un point de départ pour vous.
Changer de tableau
Modifier la visit_date (datetime)
colonne dans visit_date (date)
et visit_time (time)
colonnes, puis créez un id
colonne comme clé primaire. Enfin, définissez ip + date
être une clé unique pour s'assurer que vous ne pouvez pas saisir la même adresse IP deux fois pendant une journée.
Créer un modèle Eloquent
C'est juste pour plus de facilité :créez un modèle Eloquent pour la table afin de ne pas avoir à utiliser Fluent (générateur de requêtes) tout le temps :
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();
}
}
Vous devriez maintenant pouvoir faire ce que vous voulez en appelant simplement ceci :
Tracker::hit();