首页 > 解决方案 > 使用 Session 计算视图

问题描述

我是 laravel 的新手。我在这里找到了一种计算文章浏览量的方法,我自己使用了它,它应该可以正常工作

$viewed = Session::get('viewed_article', []);
        if (!in_array($article->id, $viewed)) {
            $article->increment('views');
            Session::push('viewed_article', $article->id);
        }

但是我唯一不完全理解的是它是如何工作的,它是做什么的,这让我感到有些不安。

谁不难,你能解释一下这个功能是如何工作的吗?

标签: laravel

解决方案


第一行:

$viewed = Session::get('viewed_article', []);

使用Session外观viewed_article从会话中获取带有键的数据,或者如果该键不存在,则设置$viewed为空数组(第二个参数设置默认值)。

下一行,if声明:

if (!in_array($article->id, $viewed)) {

确保当前文章 ID 不在$viewed数组中。

如果此条件为真(即文章不在数组中),则文章的浏览量增加(即增加一):

$article->increment('views');

最后,文章 id 被添加到viewed_articlesession 数据中,所以下次代码运行时,它不会再次计算视图:

Session::push('viewed_article', $article->id);

推荐阅读