Не съм 100% сигурен в това, но трябва да можете да направите нещо подобно. Не е тестван и може да има по-елегантен начин да го направите, но това е отправна точка за вас.
Променете таблицата
Променете visit_date (datetime)
колона в visit_date (date)
и visit_time (time)
колони, след което създайте id
колона да бъде първичен ключ. И накрая, задайте ip + date
да бъде уникален ключ, който да гарантира, че не можете да въвеждате един и същ IP адрес два пъти за един ден.
Създайте Eloquent модел
Това е само за улеснение:направете модел Eloquent за таблицата, за да не се налага да използвате Fluent (конструктор на заявки) през цялото време:
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();
}
}
Сега трябва да можете да правите каквото искате, като просто извикате това:
Tracker::hit();