所以我将此页面查看计数器添加到我的应用程序,该计数器计算艺术家页面上的每次访问。现在,如果您刷新页面,则每次刷新计数器为+1。
我的问题是如何才能让它在白天统计独特的访问次数?
我的控制器:
if ( $artist ) {
$getartist = $this->_artist->get($artist, 'slug');
if ( $getartist ) {
$getsongs = $this->_song->collections($input, $getartist->id, 'ASC');
$this->_artist->updateVisits($getartist->id);
$data = [
'is_artist' => true,
'artist' => $getartist,
'songs' => $getsongs,
'randomsongs' => $this->randomsongs,
];
return $this->view('index', $data);
}
}
计数器的代码是:
$this->_artist->updateVisits($getartist->id);
然后在我的ArtistRepository中:
public function updateVisits($artist_id)
{
$artist = $this->model->where("id",$artist_id)->first();
$artist->visits = $artist->visits+1;
$artist->save();
}
那么如果用户刷新页面,我如何防止计数器计数呢?
答案 0 :(得分:0)
首先在date
上添加DB table
字段。然后将您的功能更改为以下 -
public function updateVisits($artist_id)
{
$artist = $this->model->firstOrCreate(['id' => $artist_id,'your_date_field_name'=>date('Y-m-d')]);
$artist->visits = $artist->visits+1;
$artist->save();
}
不要忘记在id, your_date_field_name
数组上添加fillable
为mass
可分配。
答案 1 :(得分:0)
好的,我找到了一个解决这个问题的解决方案 这是我的代码。
public function updateVisits($artist_id)
{
$artist = $this->model->where("id",$artist_id)->first();
// Check if cookies exist
if(!isset($_COOKIE['visited_id' . $artist_id])) {
// If not set cookie and pass counter
setcookie('visited_id' . $artist_id, $artist_id, time()+30); /* expire in seconds */
$artist->visits = $artist->visits+1;
$artist->save();
// If cookie exist on user computer
} else {
//do nothing
}
}