检查是否定义了会话变量

时间:2019-01-17 07:21:40

标签: laravel

我需要计算观看次数。我正在使用会话变量来避免重复计数。我需要检查会话的view_count是否已设置,然后将其设置为false并增加视图计数

$currentPost = Post::where('slug',$slug)->first();
$comments =  \App\Comment::where('post_id',$currentPost->id)->get();

if(\Session::get('view_count')) {
    \Session::put('view_count', false);
    $currentPost->view_count = $currentPost->view_count + 1;
    $currentPost->save();
}

2 个答案:

答案 0 :(得分:1)

你不能只是做

if (Session::has('your_key'))
{
  //your code here
}

更新答案

确定会话中是否存在项目

要确定会话中是否存在某个项目,可以使用has方法。如果该项存在且不为null,则has方法将返回true:

if ($request->session()->has('users')) {
    //
}

要确定会话中是否存在某项,即使其值为null,也可以使用exists方法。如果存在该项,则exist方法将返回true:

if ($request->session()->exists('users')) {
    //
}

答案 1 :(得分:1)

我假设您要检查访问者是否已查看某篇博客文章,在这种情况下,我可能会做类似的事情。

$currentPost = Post::where('slug', $slug)->first();

// You should also probably set up your relationship with Comments
$comments = \App\Comment::where('post_id', $currentPost->id)->get();

if(! in_array($currentPost->id, session()->get('posts_viewed', []))) {
    session()->push('posts_viewed', $currentPost->id);

    // Your increment could also be simplified as follows 
    $currentPost->increment('view_count'); 
}

在您的特定情况下,您将只能跟踪用户是否查看了一篇特定的博客文章。但是,如果使用数组并继续将查看的博客文章推入其中,则可以跟踪许多博客文章的视图。