我正在网站上制作一个计数器页面
这是我的Controller PostController:
public function show(Post $post)
{
$post->increment('view_count');
return view("site.show", compact('post'));
}
这是我的RouteServiceProvider:
public function boot()
{
parent::boot();
Route::bind('post', function ($slug) {
return Post::published()->where('slug', $slug)->first();
});
}
此代码正常运行,但我遇到了问题,每次刷新页面时,我的帖子tabel中的字段('view_count')总是递增,问题是如何限制同一个访问者执行相同的操作刷新页面等等,提前谢谢
答案 0 :(得分:0)
您可以在会话中保留一系列帖子ID,并在进行查询之前进行检查,如果他还没有看到它。如果您想使这些视图无效,您还可以存储视图的时间戳。
public function show(Post $post)
{
$ids = Session::get('ids') ? Session::get('ids') : [];
if (!in_array($post->id, $ids)) {
$post->increment('view_count');
$ids[] = $post->id;
Session::put('ids', $ids);
}
return view("site.show", compact('post'));
}