[扩展推荐] 使用 Laravel Visits 扩展包来统计任意模型的查看数

file

Bader Almutairi 的扩展包 Laravel Visits 是用来将计数器附加到任何模型以追踪带标签的访问。该扩展包提供的主要功能如下:

  • 模型项可以有多种类型的访问记录(使用标签)。
  • 它不仅限于一种 Model (像某些扩展仅允许 User 模型)。
  • 记录每个访问者而不是通过使用 IP 检测,因此即使刷新页面访问记录也不会重复(可以通过配置进行修改)。
  • 获得每个模型的最高或最低访问量。
  • 获得访问最多的国家 ...
  • 获得条目或模型的某个时期的访问数,比如一年中的一个月。

模型计数

模型计数的基本使用包括以下递增和递减方法:

visits($post)->increment();

// 一个以上
visits($post)->increment(10);

visits($post)->decrement();

// 一个以上
visits($post)->decrement(10);

// 每过去 30 秒,根据用户的 IP 进行递增
visits($post)->seconds(30)->increment()

获取数据

当你收集到模型的计数器数据后,你可以使用以下方法检索和过滤结果:

visits($post)->count();

visits($post)->period('day')->count();

// 使用模型类
visits('App\Post')->count();

如果你想要一个快速分析工具来追踪模型,你还可以收集其他有趣的数据,比如国家和推荐人:

visits($post)->countries();

// 访客的推荐人
visits($post)->refs();

国家功能的地理数据由 Torann/laravel-geoip 扩展包提供。

和 Eloquent 整合

你可以通过直接在 Eloquent 里定义一个 visits 方法来和 Eloquent 整合:

public function visits()
{
    return visits($this);
}

然后调用模型里的 visits 方法:

$post = Post::find(1);
$post->visits()->increment();
$post->visits()->count();

了解更多

要查看完整的描述文档、安装教程和源码,可以在 GitHub 上查看这个包 awssat/laravel-visits

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://laravel-news.com/laravel-visits-...

译文地址:https://learnku.com/laravel/t/14742/exte...

本帖已被设为精华帖!
本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10
Summer

使用 redis 实现,按照页面查看数去重这个功能挺赞

5年前 评论
uax

统计频率是怎么计算的?比如24小时针对某一IP只统计一次?

5年前 评论
Destiny

😮哇塞,这个包很厉害,统计福利。

5年前 评论

Summer 这个扩展包如何持久化记录数据? php artisan cache:clear 就会重置

5年前 评论
Summer

@hedeqiang

第一步:
file

第二步


    /*
    |--------------------------------------------------------------------------
    | Redis Database Connection Name
    |--------------------------------------------------------------------------
    |
    | When using "redis" you may specify a
    | connection that should be used to manage your database storage. This should
    | correspond to a connection in your database configuration options.
    |
    */
    'connection' => 'laravel-visits',
5年前 评论

@Summer 嗯嗯,已加入,多谢

5年前 评论

@Summer 嗯嗯,已加入,多谢

5年前 评论

如果模型做了缓存,就不好玩了。 kissing_closed_eyes:

5年前 评论

file

我在生成配置文件的时候同时生成了一个迁移文件,是可以直接将redis的配置移到数据库然后写入这张表,还是跑个定时任务脚本来写入这个表?在教程里没有看到

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!