Laravel 5.3柜台访客页面

时间:2018-04-29 13:28:07

标签: php laravel

我正在网站上制作一个计数器页面

这是我的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')总是递增,问题是如何限制同一个访问者执行相同的操作刷新页面等等,提前谢谢

1 个答案:

答案 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'));
    }