marotdc / laravel-metrics
轻松生成模型的指标和趋势数据,用于您的仪表盘。
2.6.x-dev
2023-10-11 02:49 UTC
Requires
- php: ^8.1
- illuminate/database: ^10.20
- illuminate/support: ^10.20
- nesbot/carbon: ^2.69
Requires (Dev)
- phpunit/phpunit: ^9.6
This package is auto-updated.
Last update: 2024-09-11 04:38:13 UTC
README
轻松生成模型的指标和趋势数据,用于您的仪表盘。
安装
composer require marotdc/laravel-metrics
功能
- MySQL 支持
- 详细的查询构建器
- 自定义列和表定义
- 使用 Carbon 进行天和月的翻译
使用方法
使用 Eloquent 查询
在控制器中导入 Eliseekn\LaravelMetrics\LaravelMetrics
类,并按以下方式使用:
- 基本用法
// generate trends of products amount's sum for the current year LaravelMetrics::query(Product::query()) ->count() ->byMonth() ->trends(); // generate trends of orders amount's sum for the last 6 months of the current year including current month LaravelMetrics::query(Order::query()) ->sum('amount') ->byMonth(6) ->trends(); // generate total orders amount's sum LaravelMetrics::query(Order::query()) ->sum('amount') ->byYear() ->metrics(); // generate total product count for the current day LaravelMetrics::query(Product::query()) ->count() ->byDay(1) ->metrics();
- 使用自定义查询
LaravelMetrics::query( Post::query()->where('user_id', auth()->id()) ) ->count() ->byDay() ->trends();
- 使用自定义日期列
LaravelMetrics::query(Post::query()) ->count() ->byDay() ->dateColumn('published_at') ->trends();
- 使用日期范围
LaravelMetrics::query(Post::query())) ->count() ->between('2020-05-01', '2022-08-21') ->trends();
- 使用自定义标签列
LaravelMetrics::query(Order::query()) ->count() ->byMonth(12) ->labelColumn('status') ->trends();
- 使用自定义表
LaravelMetrics::query( Order::query()->join('users', 'orders.id', 'users.order_id') ) ->count() ->table('users') ->labelColumn('name') ->trends();
使用查询构建器
LaravelMetrics::query( DB::table('orders') ) ->sum('amount') ->byMonth() ->trends();
使用特性
将 HasMetrics
特性添加到您的模型中,并按以下方式使用:
Order::metrics() ->sum('amount') ->byMonth() ->trends();
时间段类型
LaravelMetrics::query(...) ->byDay(int $count = 0) // or ->byWeek(int $count = 0) // or ->byMonth(int $count = 0) // or ->byYear(int $count = 0) // or ->between(string $startDate, string $endDate, string $dateIsoFormat)
注意: 默认情况下,时间段定义为当前日、周、月或年。但是,您可以使用专用方法定义特定值。例如
// generate trends of orders count for the year 2023 LaravelMetrics::query(Order::query()) ->count() ->byMonth(12) ->forYear(2023) ->labelColumn('status') ->trends(); // generate total orders amount's sum for the third month only LaravelMetrics::query(Product::query()) ->sum('amount') ->byMonth(1) ->forMonth(3) ->metrics();
LaravelMetrics::query(...) ->forDay(int $day) ->forWeek(int $week) ->forMonth(int $month) ->forYear(int $year)
注意: 当使用 'between' 时间段时,请确保使用 'fillEmptyDates' 方法自动用默认值填充任何缺失的日期。例如
LaravelMetrics::query(...) ->count() ->between(Carbon::now()->subDays(10)->format('Y-m-d'), Carbon::now()->format('Y-m-d')) ->fillEmptyDates() ->trends();
聚合类型
LaravelMetrics::query(...) ->count(string $column = 'id') // or ->average(string $column) // or ->sum(string $column) // or ->max(string $column) // or ->min(string $column)
数据类型
LaravelMetrics::query(...) ->trends() // or ->metrics()
翻译
天和月份名称自动使用 config(app.locale)
进行翻译,除 'week' 时间段外。
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全
如果您发现任何安全问题,请通过电子邮件 eliseekn@gmail.com
而不是使用问题跟踪器。
鸣谢
许可
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。
演示
您可以在 这里 找到演示项目。
Laravel 包模板
此包是用 Laravel 包模板 生成的。