shanjing / laravel-statistics
A laravel statistics library
Installs: 5 178
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 0
Open Issues: 0
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();
Contributors
This project exists thanks to all the people who contribute. [Contribute].
You can contribute in one of three ways:
- File bug reports using the issue tracker.
- Answer questions or fix bugs on the issue tracker.
- Contribute new features or update the wiki.
The code contribution process is not very formal. You just need to make sure that you follow the PSR-0, PSR-1, and PSR-2 coding guidelines. Any new code contributions must be accompanied by unit tests where applicable.
License
MIT