shanjing / laravel-statistics
一个Laravel统计库
v0.2.8
2023-10-13 09:37 UTC
Requires
- guzzlehttp/guzzle: ^6.5 || ^7.0
Requires (Dev)
- laravel/laravel: ^8.6
- mockery/mockery: ^1.4
- phpunit/phpunit: ^9.5
README
shanjing laravel-statistics
是一个基于laravel开发的统计工具,只需少量代码即可快速构建功能完善的统计模块。开箱即用,非常适合后端开发者。
功能特性
- 简洁优雅的API
- 当缺失对应日期的数据时,自动补充0作为默认数据
- 使用json格式存储数据,易于扩展字段,存储更优雅
环境
- PHP > 7.4
- Laravel 8.*
- MySQL 8.*
安装
如果在安装过程中遇到
composer
下载速度慢或安装失败的情况,请运行命令composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
将composer
镜像更换为阿里云镜像。
首先需要安装laravel
框架,如果已经安装可以跳过此步骤。如果您是第一次使用laravel
,请务必先阅读文档 《Laravel中文文档》安装!
composer create-project --prefer-dist laravel/laravel 项目名称 7.* # 或 composer create-project --prefer-dist laravel/laravel 项目名称
安装完laravel
后需要修改.env
文件,设置正确的数据库连接设置
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database DB_USERNAME=root DB_PASSWORD=
安装laravel-statistics
cd {项目名称}
$ composer require shanjing/laravel-statistics -vvv
然后运行以下命令发布资源:
php artisan laravel-statistics:publish
该命令会生成配置文件config/statistics.php
,可以在其中修改数据库连接和表名,建议使用默认配置不修改。
// 指定数据库链接.
'connection' => '',
// 指定表名,如果后期修改数据库表名,这里也需要修改成对应的表名.
'statistics_table' => 'laravel_statistics',
然后运行以下命令完成安装:
- 注意:由于运行安装是针对具体的迁移文件,迁移文件名不可以修改。
- 文件:"2021_09_22_083561_create_statistics_table.php",
- 目录:项目目录/database/migrations/
php artisan laravel-statistics:install
使用
完成上述步骤后即可使用统计功能
- 使用统计表统计数据和读取数据
读取数据
// 今天淘宝销量、销售额 // period year | month | week | day // orderBy desc | asc app('statistics') ->get("taobao", ['gmv', 'order_num']) ->period('day') ->orderBy("desc") ->exec(); // 20210901~20210921 淘宝销量、销售额 app('statistics') ->get("taobao", ['gmv', 'order_num']) ->occurredBetween([20210901, 20210921]) ->period('day') ->orderBy("desc") ->exec();
存储数据
// 更新数据 // $arr: 会已 json 的格式存储在 data 列 // taobao: 存储在 key 列 // occurredAt: 存储在 occurred_at 列 $arr = ['gmv'=>'value', 'order_num'=>'value']; app('statistics') ->save("taobao", $arr) ->occurredAt(20210921) ->exec();
- 使用已有的model展示实时数据
1)向需要统计功能的model引入statistics模块
<?php namespace App\Models\Order; use Illuminate\Database\Eloquent\Model; use Shanjing\LaravelStatistics\Traits\Statistics; class Order extends Model { use Statistics; protected $table = ''; protected $connection = ''; }
2)在调用的controller里,调用
// period year | month | week | day // occurredBetween 时间范围 // orderBy desc | asc Order::period("day") ->occurredBetween(["20210718", "20210921"]) ->selectRaw('count(id) as total') // 支持 select 语句 ->selectRaw('SUM(`price`) as gmv') // 支持 select 语句 ->orderBy('desc') ->summary();
贡献者
此项目归功于所有贡献者。[贡献]
您可以通过以下三种方式之一进行贡献:
代码贡献过程不是很正式。您只需确保遵循PSR-0、PSR-1和PSR-2编码规范。任何新的代码贡献都必须伴随着适用的单元测试。
许可证
MIT