Tôi không chắc chắn 100% về điều này, nhưng bạn sẽ có thể làm được điều gì đó như thế này. Nó không được thử nghiệm và có thể có một cách đơn giản hơn để làm điều đó, nhưng đó là một điểm khởi đầu cho bạn.
Thay đổi bảng
Thay đổi visit_date (datetime)
cột thành visit_date (date)
và visit_time (time)
, sau đó tạo một id
để làm khóa chính. Cuối cùng, đặt ip + date
là khóa duy nhất để đảm bảo bạn không thể nhập cùng một IP hai lần trong một ngày.
Tạo mô hình Hùng biện
Điều này rất dễ hiểu:tạo mô hình Eloquent cho bảng để bạn không phải sử dụng Fluent (trình tạo truy vấn) mọi lúc:
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();
}
}
Bây giờ bạn có thể làm những gì bạn muốn chỉ bằng cách gọi sau:
Tracker::hit();