Saya tidak 100% yakin tentang ini, tetapi Anda harus dapat melakukan sesuatu seperti ini. Ini belum diuji, dan mungkin ada cara yang lebih elegan untuk melakukannya, tetapi ini adalah titik awal bagi Anda.
Ubah tabel
Ubah visit_date (datetime)
kolom ke visit_date (date)
dan visit_time (time)
kolom, lalu buat id
kolom menjadi kunci utama. Terakhir, atur ip + date
menjadi kunci unik untuk memastikan Anda tidak dapat memasukkan IP yang sama dua kali selama satu hari.
Buat model Fasih
Ini hanya untuk kemudahan:buat model Eloquent untuk tabel sehingga Anda tidak harus menggunakan Fluent (pembuat kueri) sepanjang waktu:
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();
}
}
Sekarang Anda seharusnya dapat melakukan apa yang Anda inginkan hanya dengan memanggil ini:
Tracker::hit();