Страница посетителей Laravel 5.3 Counter - PullRequest
0 голосов
/ 29 апреля 2018

Я делаю контр-страницу, на сайте

вот мой контроллер 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();
        });
    }

Этот код работает, но у меня есть проблема, каждый раз, когда я обновляю страницу, поле ('view_count') в табеле моих сообщений всегда увеличивается, вопрос в том, как ограничить одного и того же посетителя для выполнения того же действия, как обновить страницу и так далее, заранее спасибо

1 Ответ

0 голосов
/ 29 апреля 2018

Вы можете хранить внутри сессии массив идентификаторов сообщений и проверять перед выполнением запроса, если он еще не видел его. Вы также можете сохранить временную метку представления, если хотите их аннулировать.

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'));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...