[扩展推荐] 使用 Laravel Visits 扩展包来统计任意模型的查看数
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 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
本帖已被设为精华帖!
使用 redis 实现,按照页面查看数去重这个功能挺赞
统计频率是怎么计算的?比如24小时针对某一IP只统计一次?
😮哇塞,这个包很厉害,统计福利。
Summer 这个扩展包如何持久化记录数据? php artisan cache:clear 就会重置
@hedeqiang
第一步:

第二步
@Summer 嗯嗯,已加入,多谢
@Summer 嗯嗯,已加入,多谢
如果模型做了缓存,就不好玩了。 kissing_closed_eyes:
mark
我在生成配置文件的时候同时生成了一个迁移文件,是可以直接将redis的配置移到数据库然后写入这张表,还是跑个定时任务脚本来写入这个表?在教程里没有看到