计算文章的浏览量



我创建了一个简单的应用程序来计算文章的浏览量。在数据库中,项目表有一个列view_count。此外,我有一个定义的事件和侦听器,每次查看某些文章时都会递增view_count:

问题,如何使更新view_count,并存储在数据库中..?!

应用\事件\文章视图.php:

class ArticleViewsextends Event
{
    use SerializesModels;
    public $article;
    public function __construct(Article $article)
    {
        $this->article = $article;
    }
    public function broadcastOn()
    {
        return [];
    }
}

App\Listeners\ IncrementArticleViewsCounts.php:

class IncrementArticleViewsCounts
{
    public function __construct()  { }
    public function handle(ArticleViewsextends $event)
    {
        $event->article->increment('view_count');
    }
}

在ArticleController.php@show中:

$articles= new Scholarship();
Event::fire(new ArticleViewsextends ($scholarships));
parent::$data['articles'] = $articles->getAllActiveArticlesForFrontEnd(parent::$data['language']);

在视图不算数。

我猜你需要在你的听众中这样做

public function handle(ArticleViewsextends $event)
{
    $event->article->increment('view_count'); // Update your object
    $event->article->save(); // update the database
}

@Loek答案是正确的。但是这里有一件事你想考虑.如果您真的不想跟踪谁在查看文章,而只想计算特定文章的浏览次数,那么访问数据库是多余的。(SQL(。这将导致每次您希望增加查看次数时无用的查询。我建议你应该在这种情况下尝试使用nosql。像雷迪斯中的代码应如下所示

  Route::get('/article/{article}', function (Article $article) {
  Redis::zincrBy('views', 1, $article);//or any other key name
  return $article;
  });

这将为您提供额外的便利,以最大程度地查看文章跟

 $articles= Redis::zrevrange('views', 0, -1);

欲了解更多信息,请查看此处

最新更新