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

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


Practice makes perfect.

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

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

本帖已被设为精华帖!
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 8
Summer

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

7个月前
uax

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

7个月前
Destiny

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

6个月前
hedeqiang

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

6个月前
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',
6个月前
hedeqiang

@Summer 嗯嗯,已加入,多谢

6个月前
hedeqiang

@Summer 嗯嗯,已加入,多谢

6个月前
waney

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

1个月前

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!